/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/nested_pairs_to_triple.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/conv2d/selector_list.h"
#include "test/conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Selectors = sycldnn::types::SelectorList;
using Backends = sycldnn::types::AllBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<Selectors, DataTypeList>::type;
using BackendTypePairs =
    sycldnn::types::CartesianProduct<SNNTypePairs, Backends>::type;
using TestTriples = sycldnn::types::NestedPairsToTriple<BackendTypePairs>::type;

using GTestTypeTriples = sycldnn::types::ToGTestTypes<TestTriples>::type;

template <typename Pair>
using ForwardWindow5Stride1 = WindowStrideTest<Pair, 5, 1>;
TYPED_TEST_SUITE(ForwardWindow5Stride1, GTestTypeTriples);
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1554., 2142., 2760., 3030., 2460., 1869., 2636., 3564., 4510.,
      4820., 3860., 2894., 3850., 5140., 6425., 6750., 5350., 3970.,
      5110., 6760., 8375., 8700., 6850., 5050., 3632., 4756., 5830.,
      6040., 4700., 3422., 2292., 2958., 3570., 3690., 2820., 2013.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6425., 6750., 8375., 8700.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3036.,  3108.,  4182.,  4284.,  5385.,  5520.,  5910.,  6060.,  4794.,
      4920.,  3639.,  3738.,  5140.,  5272.,  6944.,  7128.,  8780.,  9020.,
      9380.,  9640.,  7504.,  7720.,  5620.,  5788.,  7490.,  7700.,  9990.,
      10280., 12475., 12850., 13100., 13500., 10370., 10700., 7685.,  7940.,
      9920.,  10220., 13110., 13520., 16225., 16750., 16850., 17400., 13250.,
      13700., 9755.,  10100., 6988.,  7264.,  9136.,  9512.,  11180., 11660.,
      11580., 12080., 8992.,  9400.,  6532.,  6844.,  4350.,  4584.,  5598.,
      5916.,  6735.,  7140.,  6960.,  7380.,  5298.,  5640.,  3765.,  4026.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {12475., 12850., 13100., 13500.,
                                         16225., 16750., 16850., 17400.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6000.,  6072.,  6144.,  6216.,  8262.,  8364.,  8466.,  8568.,  10635.,
      10770., 10905., 11040., 11670., 11820., 11970., 12120., 9462.,  9588.,
      9714.,  9840.,  7179.,  7278.,  7377.,  7476.,  10148., 10280., 10412.,
      10544., 13704., 13888., 14072., 14256., 17320., 17560., 17800., 18040.,
      18500., 18760., 19020., 19280., 14792., 15008., 15224., 15440., 11072.,
      11240., 11408., 11576., 14770., 14980., 15190., 15400., 19690., 19980.,
      20270., 20560., 24575., 24950., 25325., 25700., 25800., 26200., 26600.,
      27000., 20410., 20740., 21070., 21400., 15115., 15370., 15625., 15880.,
      19540., 19840., 20140., 20440., 25810., 26220., 26630., 27040., 31925.,
      32450., 32975., 33500., 33150., 33700., 34250., 34800., 26050., 26500.,
      26950., 27400., 19165., 19510., 19855., 20200., 13700., 13976., 14252.,
      14528., 17896., 18272., 18648., 19024., 21880., 22360., 22840., 23320.,
      22660., 23160., 23660., 24160., 17576., 17984., 18392., 18800., 12752.,
      13064., 13376., 13688., 8466.,  8700.,  8934.,  9168.,  10878., 11196.,
      11514., 11832., 13065., 13470., 13875., 14280., 13500., 13920., 14340.,
      14760., 10254., 10596., 10938., 11280., 7269.,  7530.,  7791.,  8052.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24575., 24950., 25325., 25700., 25800., 26200., 26600., 27000.,
      31925., 32450., 32975., 33500., 33150., 33700., 34250., 34800.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11955., 16500., 21285., 23415., 19020., 14457., 20440., 27648., 35000.,
      37440., 29984., 22480., 29975., 40020., 50025., 52575., 41660., 30905.,
      39875., 52740., 65325., 67875., 53420., 39365., 28240., 36960., 45280.,
      46920., 36480., 26536., 17715., 22836., 27525., 28455., 21708., 15465.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {50025., 52575., 65325., 67875.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23631.,  23910.,  32604.,  33000.,  42045.,  42570.,  46245.,  46830.,
      37548.,  38040.,  28527.,  28914.,  40364.,  40880.,  54576.,  55296.,
      69060.,  70000.,  73860.,  74880.,  59120.,  59968.,  44300.,  44960.,
      59125.,  59950.,  78900.,  80040.,  98575.,  100050., 103575., 105150.,
      82020.,  83320.,  60805.,  61810.,  78565.,  79750.,  103860., 105480.,
      128575., 130650., 133575., 135750., 105060., 106840., 77365.,  78730.,
      55388.,  56480.,  72432.,  73920.,  88660.,  90560.,  91860.,  93840.,
      71344.,  72960.,  51836.,  53072.,  34503.,  35430.,  44412.,  45672.,
      53445.,  55050.,  55245.,  56910.,  42060.,  43416.,  29895.,  30930.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {98575.,  100050., 103575., 105150.,
                                         128575., 130650., 133575., 135750.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46983.,  47262.,  47541.,  47820.,  64812.,  65208.,  65604.,  66000.,
      83565.,  84090.,  84615.,  85140.,  91905.,  92490.,  93075.,  93660.,
      74604.,  75096.,  75588.,  76080.,  56667.,  57054.,  57441.,  57828.,
      80212.,  80728.,  81244.,  81760.,  108432., 109152., 109872., 110592.,
      137180., 138120., 139060., 140000., 146700., 147720., 148740., 149760.,
      117392., 118240., 119088., 119936., 87940.,  88600.,  89260.,  89920.,
      117425., 118250., 119075., 119900., 156660., 157800., 158940., 160080.,
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      162740., 164040., 165340., 166640., 120605., 121610., 122615., 123620.,
      155945., 157130., 158315., 159500., 206100., 207720., 209340., 210960.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.,
      208340., 210120., 211900., 213680., 153365., 154730., 156095., 157460.,
      109684., 110776., 111868., 112960., 143376., 144864., 146352., 147840.,
      175420., 177320., 179220., 181120., 181740., 183720., 185700., 187680.,
      141072., 142688., 144304., 145920., 102436., 103672., 104908., 106144.,
      68079.,  69006.,  69933.,  70860.,  87564.,  88824.,  90084.,  91344.,
      105285., 106890., 108495., 110100., 108825., 110490., 112155., 113820.,
      82764.,  84120.,  85476.,  86832.,  58755.,  59790.,  60825.,  61860.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      93750.,  129480., 167130., 184050., 149544., 113694., 160952., 217760.,
      275720., 295080., 236320., 177176., 236530., 315800., 394750., 414950.,
      328760., 243850., 315010., 416600., 515950., 536150., 421880., 310810.,
      222680., 291360., 356840., 369800., 287392., 208952., 139254., 179400.,
      216090., 223410., 170280., 121182.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {394750., 414950., 515950., 536150.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186402.,  187500.,  257400., 258960., 332190., 334260.,  365790.,
      368100.,  297144.,  299088., 225858., 227388., 319864.,  321904.,
      432672.,  435520.,  547720., 551440., 586120., 590160.,  469280.,
      472640.,  351736.,  354352., 469790., 473060., 627080.,  631600.,
      783650.,  789500.,  823650., 829900., 652360., 657520.,  483710.,
      487700.,  625310.,  630020., 826760., 833200., 1023650., 1031900.,
      1063650., 1072300., 836680., 843760., 616190., 621620.,  441016.,
      445360.,  576800.,  582720., 706120., 713680., 731720.,  739600.,
      568352.,  574784.,  412984., 417904., 274818., 278508.,  353784.,
      358800.,  425790.,  432180., 440190., 446820., 335160.,  340560.,
      238242.,  242364.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {783650.,  789500.,  823650.,
                                         829900.,  1023650., 1031900.,
                                         1063650., 1072300.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371706.,  372804.,  373902.,  375000.,  513240.,  514800.,  516360.,
      517920.,  662310.,  664380.,  666450.,  668520.,  729270.,  731580.,
      733890.,  736200.,  592344.,  594288.,  596232.,  598176.,  450186.,
      451716.,  453246.,  454776.,  637688.,  639728.,  641768.,  643808.,
      862496.,  865344.,  868192.,  871040.,  1091720., 1095440., 1099160.,
      1102880., 1168200., 1172240., 1176280., 1180320., 935200.,  938560.,
      941920.,  945280.,  700856.,  703472.,  706088.,  708704.,  936310.,
      939580.,  942850.,  946120.,  1249640., 1254160., 1258680., 1263200.,
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 1299560., 1304720., 1309880., 1315040., 963430.,  967420.,
      971410.,  975400.,  1245910., 1250620., 1255330., 1260040., 1647080.,
      1653520., 1659960., 1666400., 2039050., 2047300., 2055550., 2063800.,
      2118650., 2127300., 2135950., 2144600., 1666280., 1673360., 1680440.,
      1687520., 1226950., 1232380., 1237810., 1243240., 877688.,  882032.,
      886376.,  890720.,  1147680., 1153600., 1159520., 1165440., 1404680.,
      1412240., 1419800., 1427360., 1455560., 1463440., 1471320., 1479200.,
      1130272., 1136704., 1143136., 1149568., 821048.,  825968.,  830888.,
      835808.,  545946.,  549636.,  553326.,  557016.,  702552.,  707568.,
      712584.,  717600.,  845190.,  851580.,  857970.,  864360.,  873750.,
      880380.,  887010.,  893640.,  664920.,  670320.,  675720.,  681120.,
      472362.,  476484.,  480606.,  484728.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300.,
      1653550., 1659800., 2039050., 2047300., 2055550., 2063800.,
      2118650., 2127300., 2135950., 2144600.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755., 2404., 3080., 3350., 3620., 2920., 2205., 3008.,  4048.,
      5100., 5410., 5720., 4560., 3404., 4420., 5880., 7325.,  7650.,
      7975., 6300., 4660., 5890., 7770., 9600., 9925., 10250., 8050.,
      5920., 4190., 5472., 6690., 6900., 7110., 5520., 4010.,  2646.,
      3406., 4100., 4220., 4340., 3310., 2358.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325., 7650., 7975.,
                                         9600., 9925., 10250.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  4694.,  4808.,  6010.,  6160.,  6535.,  6700.,  7060.,
      7240.,  5690.,  5840.,  4293.,  4410.,  5866.,  6016.,  7888.,  8096.,
      9930.,  10200., 10530., 10820., 11130., 11440., 8864.,  9120.,  6610.,
      6808.,  8600.,  8840.,  11430., 11760., 14225., 14650., 14850., 15300.,
      15475., 15950., 12210., 12600., 9020.,  9320.,  11435., 11780., 15070.,
      15540., 18600., 19200., 19225., 19850., 19850., 20500., 15570., 16100.,
      11435., 11840., 8062.,  8380.,  10512., 10944., 12830., 13380., 13230.,
      13800., 13630., 14220., 10560., 11040., 7654.,  8020.,  5022.,  5292.,
      6446.,  6812.,  7735.,  8200.,  7960.,  8440.,  8185.,  8680.,  6218.,
      6620.,  4410.,  4716.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {14225., 14650., 14850., 15300.,
                                         15475., 15950., 18600., 19200.,
                                         19225., 19850., 19850., 20500.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,  6858.,  6939.,  7020.,  9274.,  9388.,  9502.,  9616.,  11870.,
      12020., 12170., 12320., 12905., 13070., 13235., 13400., 13940., 14120.,
      14300., 14480., 11230., 11380., 11530., 11680., 8469.,  8586.,  8703.,
      8820.,  11582., 11732., 11882., 12032., 15568., 15776., 15984., 16192.,
      19590., 19860., 20130., 20400., 20770., 21060., 21350., 21640., 21950.,
      22260., 22570., 22880., 17472., 17728., 17984., 18240., 13022., 13220.,
      13418., 13616., 16960., 17200., 17440., 17680., 22530., 22860., 23190.,
      23520., 28025., 28450., 28875., 29300., 29250., 29700., 30150., 30600.,
      30475., 30950., 31425., 31900., 24030., 24420., 24810., 25200., 17740.,
      18040., 18340., 18640., 22525., 22870., 23215., 23560., 29670., 30140.,
      30610., 31080., 36600., 37200., 37800., 38400., 37825., 38450., 39075.,
      39700., 39050., 39700., 40350., 41000., 30610., 31140., 31670., 32200.,
      22465., 22870., 23275., 23680., 15806., 16124., 16442., 16760., 20592.,
      21024., 21456., 21888., 25110., 25660., 26210., 26760., 25890., 26460.,
      27030., 27600., 26670., 27260., 27850., 28440., 20640., 21120., 21600.,
      22080., 14942., 15308., 15674., 16040., 9774.,  10044., 10314., 10584.,
      12526., 12892., 13258., 13624., 15005., 15470., 15935., 16400., 15440.,
      15920., 16400., 16880., 15875., 16370., 16865., 17360., 12034., 12436.,
      12838., 13240., 8514.,  8820.,  9126.,  9432.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025., 28450., 28875., 29300., 29250., 29700., 30150., 30600.,
      30475., 30950., 31425., 31900., 36600., 37200., 37800., 38400.,
      37825., 38450., 39075., 39700., 39050., 39700., 40350., 41000.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13545., 18572., 23815., 25945., 28075., 22652., 17109., 23380., 31472.,
      39660., 42100., 44540., 35504., 26500., 34475., 45860., 57125., 59675.,
      62225., 49140., 36335., 46025., 60700., 74975., 77525., 80075., 62860.,
      46205., 32620., 42576., 52020., 53660., 55300., 42896., 31132., 20475.,
      26324., 31645., 32575., 33505., 25508., 18135.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {57125., 59675., 62225.,
                                         74975., 77525., 80075.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26775.,  27090.,  36700.,  37144.,  47045.,  47630.,  51245.,  51890.,
      55445.,  56150.,  44716.,  45304.,  33759.,  34218.,  46172.,  46760.,
      62128.,  62944.,  78260.,  79320.,  83060.,  84200.,  87860.,  89080.,
      70000.,  71008.,  52220.,  53000.,  68005.,  68950.,  90420.,  91720.,
      112575., 114250., 117575., 119350., 122575., 124450., 96740.,  98280.,
      71485.,  72670.,  90685.,  92050.,  119540., 121400., 147575., 149950.,
      152575., 155050., 157575., 160150., 123620., 125720., 90805.,  92410.,
      63980.,  65240.,  83440.,  85152.,  101860., 104040., 105060., 107320.,
      108260., 110600., 83888.,  85792.,  60812.,  62264.,  39879.,  40950.,
      51196.,  52648.,  61445.,  63290.,  63245.,  65150.,  65045.,  67010.,
      49420.,  51016.,  35055.,  36270.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {112575., 114250., 117575., 119350.,
                                         122575., 124450., 147575., 149950.,
                                         152575., 155050., 157575., 160150.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53235.,  53550.,  53865.,  54180.,  72956.,  73400.,  73844.,  74288.,
      93505.,  94090.,  94675.,  95260.,  101845., 102490., 103135., 103780.,
      110185., 110890., 111595., 112300., 88844.,  89432.,  90020.,  90608.,
      67059.,  67518.,  67977.,  68436.,  91756.,  92344.,  92932.,  93520.,
      123440., 124256., 125072., 125888., 155460., 156520., 157580., 158640.,
      164980., 166120., 167260., 168400., 174500., 175720., 176940., 178160.,
      138992., 140000., 141008., 142016., 103660., 104440., 105220., 106000.,
      135065., 136010., 136955., 137900., 179540., 180840., 182140., 183440.,
      223475., 225150., 226825., 228500., 233375., 235150., 236925., 238700.,
      243275., 245150., 247025., 248900., 191940., 193480., 195020., 196560.,
      141785., 142970., 144155., 145340., 180005., 181370., 182735., 184100.,
      237220., 239080., 240940., 242800., 292775., 295150., 297525., 299900.,
      302675., 305150., 307625., 310100., 312575., 315150., 317725., 320300.,
      245140., 247240., 249340., 251440., 180005., 181610., 183215., 184820.,
      126700., 127960., 129220., 130480., 165168., 166880., 168592., 170304.,
      201540., 203720., 205900., 208080., 207860., 210120., 212380., 214640.,
      214180., 216520., 218860., 221200., 165872., 167776., 169680., 171584.,
      120172., 121624., 123076., 124528., 78687.,  79758.,  80829.,  81900.,
      100940., 102392., 103844., 105296., 121045., 122890., 124735., 126580.,
      124585., 126490., 128395., 130300., 128125., 130090., 132055., 134020.,
      97244.,  98840.,  100436., 102032., 68895.,  70110.,  71325.,  72540.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      223475., 225150., 226825., 228500., 233375., 235150., 236925., 238700.,
      243275., 245150., 247025., 248900., 292775., 295150., 297525., 299900.,
      302675., 305150., 307625., 310100., 312575., 315150., 317725., 320300.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      106398., 145960., 187250., 204170., 221090., 178408., 134766.,
      184328., 248160., 312760., 332120., 351480., 280160., 209096.,
      272290., 362200., 451150., 471350., 491550., 388120., 286930.,
      363850., 479800., 592550., 612750., 632950., 496760., 365050.,
      257384., 335840., 410200., 423160., 436120., 338144., 245288.,
      161046., 206920., 248570., 255890., 263210., 200200., 142182.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {451150., 471350., 491550.,
                                         592550., 612750., 632950.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      211554.,  212796.,  290168.,  291920., 372190.,  374500.,  405790.,
      408340.,  439390.,  442180.,  354488., 356816.,  267714.,  269532.,
      366328.,  368656.,  493088.,  496320., 621320.,  625520.,  659720.,
      664240.,  698120.,  702960.,  556320., 560320.,  415096.,  418192.,
      540830.,  544580.,  719240.,  724400., 895650.,  902300.,  935650.,
      942700.,  975650.,  983100.,  770120., 776240.,  569150.,  573860.,
      722270.,  727700.,  952200.,  959600., 1175650., 1185100., 1215650.,
      1225500., 1255650., 1265900., 985160., 993520.,  723710.,  730100.,
      509752.,  514768.,  664864.,  671680., 811720.,  820400.,  837320.,
      846320.,  862920.,  872240.,  668704., 676288.,  484792.,  490576.,
      317826.,  322092.,  408056.,  413840., 489790.,  497140.,  504190.,
      511780.,  518590.,  526420.,  394040., 400400.,  279522.,  284364.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      895650.,  902300.,  935650.,  942700.,  975650.,  983100.,
      1175650., 1185100., 1215650., 1225500., 1255650., 1265900.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      421866.,  423108.,  424350.,  425592.,  578584.,  580336.,  582088.,
      583840.,  742070.,  744380.,  746690.,  749000.,  809030.,  811580.,
      814130.,  816680.,  875990.,  878780.,  881570.,  884360.,  706648.,
      708976.,  711304.,  713632.,  533610.,  535428.,  537246.,  539064.,
      730328.,  732656.,  734984.,  737312.,  982944.,  986176.,  989408.,
      992640.,  1238440., 1242640., 1246840., 1251040., 1314920., 1319440.,
      1323960., 1328480., 1391400., 1396240., 1401080., 1405920., 1108640.,
      1112640., 1116640., 1120640., 827096.,  830192.,  833288.,  836384.,
      1077910., 1081660., 1085410., 1089160., 1433320., 1438480., 1443640.,
      1448800., 1784650., 1791300., 1797950., 1804600., 1864250., 1871300.,
      1878350., 1885400., 1943850., 1951300., 1958750., 1966200., 1534120.,
      1540240., 1546360., 1552480., 1133590., 1138300., 1143010., 1147720.,
      1439110., 1444540., 1449970., 1455400., 1897000., 1904400., 1911800.,
      1919200., 2341850., 2351300., 2360750., 2370200., 2421450., 2431300.,
      2441150., 2451000., 2501050., 2511300., 2521550., 2531800., 1961960.,
      1970320., 1978680., 1987040., 1441030., 1447420., 1453810., 1460200.,
      1014488., 1019504., 1024520., 1029536., 1322912., 1329728., 1336544.,
      1343360., 1614760., 1623440., 1632120., 1640800., 1665640., 1674640.,
      1683640., 1692640., 1716520., 1725840., 1735160., 1744480., 1329824.,
      1337408., 1344992., 1352576., 963800.,  969584.,  975368.,  981152.,
      631386.,  635652.,  639918.,  644184.,  810328.,  816112.,  821896.,
      827680.,  972230.,  979580.,  986930.,  994280.,  1000790., 1008380.,
      1015970., 1023560., 1029350., 1037180., 1045010., 1052840., 781720.,
      788080.,  794440.,  800800.,  554202.,  559044.,  563886.,  568728.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784650., 1791300., 1797950., 1804600., 1864250., 1871300.,
      1878350., 1885400., 1943850., 1951300., 1958750., 1966200.,
      2341850., 2351300., 2360750., 2370200., 2421450., 2431300.,
      2441150., 2451000., 2501050., 2511300., 2521550., 2531800.};
  const std::array<int, 4> in_shape = {{1, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1956., 2666., 3400., 3670., 3940., 4210., 3380.,  2541.,  3380.,  4532.,
      5690., 6000., 6310., 6620., 5260., 3914., 4990.,  6620.,  8225.,  8550.,
      8875., 9200., 7250., 5350., 6670., 8780., 10825., 11150., 11475., 11800.,
      9250., 6790., 4748., 6188., 7550., 7760., 7970.,  8180.,  6340.,  4598.,
      3000., 3854., 4630., 4750., 4870., 4990., 3800.,  2703.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8225.,  8550.,  8875.,  9200.,
                                         10825., 11150., 11475., 11800.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3822.,  3912.,  5206.,  5332.,  6635.,  6800.,  7160.,  7340.,  7685.,
      7880.,  8210.,  8420.,  6586.,  6760.,  4947.,  5082.,  6592.,  6760.,
      8832.,  9064.,  11080., 11380., 11680., 12000., 12280., 12620., 12880.,
      13240., 10224., 10520., 7600.,  7828.,  9710.,  9980.,  12870., 13240.,
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400., 14050.,
      14500., 10355., 10700., 12950., 13340., 17030., 17560., 20975., 21650.,
      21600., 22300., 22225., 22950., 22850., 23600., 17890., 18500., 13115.,
      13580., 9136.,  9496.,  11888., 12376., 14480., 15100., 14880., 15520.,
      15280., 15940., 15680., 16360., 12128., 12680., 8776.,  9196.,  5694.,
      6000.,  7294.,  7708.,  8735.,  9260.,  8960.,  9500.,  9185.,  9740.,
      9410.,  9980.,  7138.,  7600.,  5055.,  5406.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400.,
      20975., 21650., 21600., 22300., 22225., 22950., 22850., 23600.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7554.,  7644.,  7734.,  7824.,  10286., 10412., 10538., 10664., 13105.,
      13270., 13435., 13600., 14140., 14320., 14500., 14680., 15175., 15370.,
      15565., 15760., 16210., 16420., 16630., 16840., 12998., 13172., 13346.,
      13520., 9759.,  9894.,  10029., 10164., 13016., 13184., 13352., 13520.,
      17432., 17664., 17896., 18128., 21860., 22160., 22460., 22760., 23040.,
      23360., 23680., 24000., 24220., 24560., 24900., 25240., 25400., 25760.,
      26120., 26480., 20152., 20448., 20744., 21040., 14972., 15200., 15428.,
      15656., 19150., 19420., 19690., 19960., 25370., 25740., 26110., 26480.,
      31475., 31950., 32425., 32900., 32700., 33200., 33700., 34200., 33925.,
      34450., 34975., 35500., 35150., 35700., 36250., 36800., 27650., 28100.,
      28550., 29000., 20365., 20710., 21055., 21400., 25510., 25900., 26290.,
      26680., 33530., 34060., 34590., 35120., 41275., 41950., 42625., 43300.,
      42500., 43200., 43900., 44600., 43725., 44450., 45175., 45900., 44950.,
      45700., 46450., 47200., 35170., 35780., 36390., 37000., 25765., 26230.,
      26695., 27160., 17912., 18272., 18632., 18992., 23288., 23776., 24264.,
      24752., 28340., 28960., 29580., 30200., 29120., 29760., 30400., 31040.,
      29900., 30560., 31220., 31880., 30680., 31360., 32040., 32720., 23704.,
      24256., 24808., 25360., 17132., 17552., 17972., 18392., 11082., 11388.,
      11694., 12000., 14174., 14588., 15002., 15416., 16945., 17470., 17995.,
      18520., 17380., 17920., 18460., 19000., 17815., 18370., 18925., 19480.,
      18250., 18820., 19390., 19960., 13814., 14276., 14738., 15200., 9759.,
      10110., 10461., 10812.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475., 31950., 32425., 32900., 32700., 33200., 33700., 34200.,
      33925., 34450., 34975., 35500., 35150., 35700., 36250., 36800.,
      41275., 41950., 42625., 43300., 42500., 43200., 43900., 44600.,
      43725., 44450., 45175., 45900., 44950., 45700., 46450., 47200.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15135., 20644., 26345., 28475., 30605., 32735., 26284., 19761.,
      26320., 35296., 44320., 46760., 49200., 51640., 41024., 30520.,
      38975., 51700., 64225., 66775., 69325., 71875., 56620., 41765.,
      52175., 68660., 84625., 87175., 89725., 92275., 72300., 53045.,
      37000., 48192., 58760., 60400., 62040., 63680., 49312., 35728.,
      23235., 29812., 35765., 36695., 37625., 38555., 29308., 20805.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {64225., 66775., 69325., 71875.,
                                         84625., 87175., 89725., 92275.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29919.,  30270.,  40796.,  41288.,  52045.,  52690.,  56245.,  56950.,
      60445.,  61210.,  64645.,  65470.,  51884.,  52568.,  38991.,  39522.,
      51980.,  52640.,  69680.,  70592.,  87460.,  88640.,  92260.,  93520.,
      97060.,  98400.,  101860., 103280., 80880.,  82048.,  60140.,  61040.,
      76885.,  77950.,  101940., 103400., 126575., 128450., 131575., 133550.,
      136575., 138650., 141575., 143750., 111460., 113240., 82165.,  83530.,
      102805., 104350., 135220., 137320., 166575., 169250., 171575., 174350.,
      176575., 179450., 181575., 184550., 142180., 144600., 104245., 106090.,
      72572.,  74000.,  94448.,  96384.,  115060., 117520., 118260., 120800.,
      121460., 124080., 124660., 127360., 96432.,  98624.,  69788.,  71456.,
      45255.,  46470.,  57980.,  59624.,  69445.,  71530.,  71245.,  73390.,
      73045.,  75250.,  74845.,  77110.,  56780.,  58616.,  40215.,  41610.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      126575., 128450., 131575., 133550., 136575., 138650., 141575., 143750.,
      166575., 169250., 171575., 174350., 176575., 179450., 181575., 184550.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      59487.,  59838.,  60189.,  60540.,  81100.,  81592.,  82084.,  82576.,
      103445., 104090., 104735., 105380., 111785., 112490., 113195., 113900.,
      120125., 120890., 121655., 122420., 128465., 129290., 130115., 130940.,
      103084., 103768., 104452., 105136., 77451.,  77982.,  78513.,  79044.,
      103300., 103960., 104620., 105280., 138448., 139360., 140272., 141184.,
      173740., 174920., 176100., 177280., 183260., 184520., 185780., 187040.,
      192780., 194120., 195460., 196800., 202300., 203720., 205140., 206560.,
      160592., 161760., 162928., 164096., 119380., 120280., 121180., 122080.,
      152705., 153770., 154835., 155900., 202420., 203880., 205340., 206800.,
      251275., 253150., 255025., 256900., 261175., 263150., 265125., 267100.,
      271075., 273150., 275225., 277300., 280975., 283150., 285325., 287500.,
      221140., 222920., 224700., 226480., 162965., 164330., 165695., 167060.,
      204065., 205610., 207155., 208700., 268340., 270440., 272540., 274640.,
      330475., 333150., 335825., 338500., 340375., 343150., 345925., 348700.,
      350275., 353150., 356025., 358900., 360175., 363150., 366125., 369100.,
      281940., 284360., 286780., 289200., 206645., 208490., 210335., 212180.,
      143716., 145144., 146572., 148000., 186960., 188896., 190832., 192768.,
      227660., 230120., 232580., 235040., 233980., 236520., 239060., 241600.,
      240300., 242920., 245540., 248160., 246620., 249320., 252020., 254720.,
      190672., 192864., 195056., 197248., 137908., 139576., 141244., 142912.,
      89295.,  90510.,  91725.,  92940.,  114316., 115960., 117604., 119248.,
      136805., 138890., 140975., 143060., 140345., 142490., 144635., 146780.,
      143885., 146090., 148295., 150500., 147425., 149690., 151955., 154220.,
      111724., 113560., 115396., 117232., 79035.,  80430.,  81825.,  83220.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      251275., 253150., 255025., 256900., 261175., 263150., 265125., 267100.,
      271075., 273150., 275225., 277300., 280975., 283150., 285325., 287500.,
      330475., 333150., 335825., 338500., 340375., 343150., 345925., 348700.,
      350275., 353150., 356025., 358900., 360175., 363150., 366125., 369100.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      119046., 162440., 207370., 224290., 241210., 258130., 207272., 155838.,
      207704., 278560., 349800., 369160., 388520., 407880., 324000., 241016.,
      308050., 408600., 507550., 527750., 547950., 568150., 447480., 330010.,
      412690., 543000., 669150., 689350., 709550., 729750., 571640., 419290.,
      292088., 380320., 463560., 476520., 489480., 502440., 388896., 281624.,
      182838., 234440., 281050., 288370., 295690., 303010., 230120., 163182.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {507550., 527750., 547950., 568150.,
                                         669150., 689350., 709550., 729750.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      236706.,  238092.,  322936.,  324880.,  412190.,  414740.,  445790.,
      448580.,  479390.,  482420.,  512990.,  516260.,  411832.,  414544.,
      309570.,  311676.,  412792.,  415408.,  553504.,  557120.,  694920.,
      699600.,  733320.,  738320.,  771720.,  777040.,  810120.,  815760.,
      643360.,  648000.,  478456.,  482032.,  611870.,  616100.,  811400.,
      817200.,  1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 887880.,  894960.,  654590.,  660020.,  819230.,
      825380.,  1077640., 1086000., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500., 1133640., 1143280., 831230.,
      838580.,  578488.,  584176.,  752928.,  760640.,  917320.,  927120.,
      942920.,  953040.,  968520.,  978960.,  994120.,  1004880., 769056.,
      777792.,  556600.,  563248.,  360834.,  365676.,  462328.,  468880.,
      553790.,  562100.,  568190.,  576740.,  582590.,  591380.,  596990.,
      606020.,  452920.,  460240.,  320802.,  326364.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      472026.,  473412.,  474798.,  476184.,  643928.,  645872.,  647816.,
      649760.,  821830.,  824380.,  826930.,  829480.,  888790.,  891580.,
      894370.,  897160.,  955750.,  958780.,  961810.,  964840.,  1022710.,
      1025980., 1029250., 1032520., 820952.,  823664.,  826376.,  829088.,
      617034.,  619140.,  621246.,  623352.,  822968.,  825584.,  828200.,
      830816.,  1103392., 1107008., 1110624., 1114240., 1385160., 1389840.,
      1394520., 1399200., 1461640., 1466640., 1471640., 1476640., 1538120.,
      1543440., 1548760., 1554080., 1614600., 1620240., 1625880., 1631520.,
      1282080., 1286720., 1291360., 1296000., 953336.,  956912.,  960488.,
      964064.,  1219510., 1223740., 1227970., 1232200., 1617000., 1622800.,
      1628600., 1634400., 2007850., 2015300., 2022750., 2030200., 2087450.,
      2095300., 2103150., 2111000., 2167050., 2175300., 2183550., 2191800.,
      2246650., 2255300., 2263950., 2272600., 1768680., 1775760., 1782840.,
      1789920., 1303750., 1309180., 1314610., 1320040., 1632310., 1638460.,
      1644610., 1650760., 2146920., 2155280., 2163640., 2172000., 2644650.,
      2655300., 2665950., 2676600., 2724250., 2735300., 2746350., 2757400.,
      2803850., 2815300., 2826750., 2838200., 2883450., 2895300., 2907150.,
      2919000., 2257640., 2267280., 2276920., 2286560., 1655110., 1662460.,
      1669810., 1677160., 1151288., 1156976., 1162664., 1168352., 1498144.,
      1505856., 1513568., 1521280., 1824840., 1834640., 1844440., 1854240.,
      1875720., 1885840., 1895960., 1906080., 1926600., 1937040., 1947480.,
      1957920., 1977480., 1988240., 1999000., 2009760., 1529376., 1538112.,
      1546848., 1555584., 1106552., 1113200., 1119848., 1126496., 716826.,
      721668.,  726510.,  731352.,  918104.,  924656.,  931208.,  937760.,
      1099270., 1107580., 1115890., 1124200., 1127830., 1136380., 1144930.,
      1153480., 1156390., 1165180., 1173970., 1182760., 1184950., 1193980.,
      1203010., 1212040., 898520.,  905840.,  913160.,  920480.,  636042.,
      641604.,  647166.,  652728.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2007850., 2015300., 2022750., 2030200., 2087450., 2095300., 2103150.,
      2111000., 2167050., 2175300., 2183550., 2191800., 2246650., 2255300.,
      2263950., 2272600., 2644650., 2655300., 2665950., 2676600., 2724250.,
      2735300., 2746350., 2757400., 2803850., 2815300., 2826750., 2838200.,
      2883450., 2895300., 2907150., 2919000.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1554.,  2142., 2760., 3030., 2460., 1869., 2636., 3564., 4510.,
      4820.,  3860., 2894., 3850., 5140., 6425., 6750., 5350., 3970.,
      5110.,  6760., 8375., 8700., 6850., 5050., 6370., 8380., 10325.,
      10650., 8350., 6130., 4460., 5812., 7090., 7300., 5660., 4106.,
      2778.,  3570., 4290., 4410., 3360., 2391.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6425., 6750.,  8375.,
                                         8700., 10325., 10650.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3036.,  3108.,  4182.,  4284.,  5385.,  5520.,  5910.,  6060.,  4794.,
      4920.,  3639.,  3738.,  5140.,  5272.,  6944.,  7128.,  8780.,  9020.,
      9380.,  9640.,  7504.,  7720.,  5620.,  5788.,  7490.,  7700.,  9990.,
      10280., 12475., 12850., 13100., 13500., 10370., 10700., 7685.,  7940.,
      9920.,  10220., 13110., 13520., 16225., 16750., 16850., 17400., 13250.,
      13700., 9755.,  10100., 12350., 12740., 16230., 16760., 19975., 20650.,
      20600., 21300., 16130., 16700., 11825., 12260., 8572.,  8920.,  11152.,
      11624., 13580., 14180., 13980., 14600., 10816., 11320., 7828.,  8212.,
      5268.,  5556.,  6750.,  7140.,  8085.,  8580.,  8310.,  8820.,  6306.,
      6720.,  4467.,  4782.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {12475., 12850., 13100., 13500.,
                                         16225., 16750., 16850., 17400.,
                                         19975., 20650., 20600., 21300.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6000.,  6072.,  6144.,  6216.,  8262.,  8364.,  8466.,  8568.,  10635.,
      10770., 10905., 11040., 11670., 11820., 11970., 12120., 9462.,  9588.,
      9714.,  9840.,  7179.,  7278.,  7377.,  7476.,  10148., 10280., 10412.,
      10544., 13704., 13888., 14072., 14256., 17320., 17560., 17800., 18040.,
      18500., 18760., 19020., 19280., 14792., 15008., 15224., 15440., 11072.,
      11240., 11408., 11576., 14770., 14980., 15190., 15400., 19690., 19980.,
      20270., 20560., 24575., 24950., 25325., 25700., 25800., 26200., 26600.,
      27000., 20410., 20740., 21070., 21400., 15115., 15370., 15625., 15880.,
      19540., 19840., 20140., 20440., 25810., 26220., 26630., 27040., 31925.,
      32450., 32975., 33500., 33150., 33700., 34250., 34800., 26050., 26500.,
      26950., 27400., 19165., 19510., 19855., 20200., 24310., 24700., 25090.,
      25480., 31930., 32460., 32990., 33520., 39275., 39950., 40625., 41300.,
      40500., 41200., 41900., 42600., 31690., 32260., 32830., 33400., 23215.,
      23650., 24085., 24520., 16796., 17144., 17492., 17840., 21832., 22304.,
      22776., 23248., 26560., 27160., 27760., 28360., 27340., 27960., 28580.,
      29200., 21128., 21632., 22136., 22640., 15272., 15656., 16040., 16424.,
      10248., 10536., 10824., 11112., 13110., 13500., 13890., 14280., 15675.,
      16170., 16665., 17160., 16110., 16620., 17130., 17640., 12198., 12612.,
      13026., 13440., 8619.,  8934.,  9249.,  9564.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24575., 24950., 25325., 25700., 25800., 26200., 26600., 27000.,
      31925., 32450., 32975., 33500., 33150., 33700., 34250., 34800.,
      39275., 39950., 40625., 41300., 40500., 41200., 41900., 42600.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11955., 16500., 21285., 23415., 19020., 14457., 20440., 27648., 35000.,
      37440., 29984., 22480., 29975., 40020., 50025., 52575., 41660., 30905.,
      39875., 52740., 65325., 67875., 53420., 39365., 49775., 65460., 80625.,
      83175., 65180., 47825., 34720., 45216., 55120., 56760., 43968., 31864.,
      21495., 27588., 33105., 34035., 25884., 18381.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {50025., 52575., 65325.,
                                         67875., 80625., 83175.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23631.,  23910.,  32604.,  33000.,  42045.,  42570.,  46245.,  46830.,
      37548.,  38040.,  28527.,  28914.,  40364.,  40880.,  54576.,  55296.,
      69060.,  70000.,  73860.,  74880.,  59120.,  59968.,  44300.,  44960.,
      59125.,  59950.,  78900.,  80040.,  98575.,  100050., 103575., 105150.,
      82020.,  83320.,  60805.,  61810.,  78565.,  79750.,  103860., 105480.,
      128575., 130650., 133575., 135750., 105060., 106840., 77365.,  78730.,
      98005.,  99550.,  128820., 130920., 158575., 161250., 163575., 166350.,
      128100., 130360., 93925.,  95650.,  68060.,  69440.,  88560.,  90432.,
      107860., 110240., 111060., 113520., 85936.,  87936.,  62204.,  63728.,
      41847.,  42990.,  53628.,  55176.,  64245.,  66210.,  66045.,  68070.,
      50124.,  51768.,  35511.,  36762.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {98575.,  100050., 103575., 105150.,
                                         128575., 130650., 133575., 135750.,
                                         158575., 161250., 163575., 166350.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46983.,  47262.,  47541.,  47820.,  64812.,  65208.,  65604.,  66000.,
      83565.,  84090.,  84615.,  85140.,  91905.,  92490.,  93075.,  93660.,
      74604.,  75096.,  75588.,  76080.,  56667.,  57054.,  57441.,  57828.,
      80212.,  80728.,  81244.,  81760.,  108432., 109152., 109872., 110592.,
      137180., 138120., 139060., 140000., 146700., 147720., 148740., 149760.,
      117392., 118240., 119088., 119936., 87940.,  88600.,  89260.,  89920.,
      117425., 118250., 119075., 119900., 156660., 157800., 158940., 160080.,
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      162740., 164040., 165340., 166640., 120605., 121610., 122615., 123620.,
      155945., 157130., 158315., 159500., 206100., 207720., 209340., 210960.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.,
      208340., 210120., 211900., 213680., 153365., 154730., 156095., 157460.,
      194465., 196010., 197555., 199100., 255540., 257640., 259740., 261840.,
      314475., 317150., 319825., 322500., 324375., 327150., 329925., 332700.,
      253940., 256200., 258460., 260720., 186125., 187850., 189575., 191300.,
      134740., 136120., 137500., 138880., 175248., 177120., 178992., 180864.,
      213340., 215720., 218100., 220480., 219660., 222120., 224580., 227040.,
      169872., 171872., 173872., 175872., 122884., 124408., 125932., 127456.,
      82551.,  83694.,  84837.,  85980.,  105708., 107256., 108804., 110352.,
      126525., 128490., 130455., 132420., 130065., 132090., 134115., 136140.,
      98604.,  100248., 101892., 103536., 69771.,  71022.,  72273.,  73524.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.,
      314475., 317150., 319825., 322500., 324375., 327150., 329925., 332700.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      93750.,  129480., 167130., 184050., 149544., 113694., 160952.,
      217760., 275720., 295080., 236320., 177176., 236530., 315800.,
      394750., 414950., 328760., 243850., 315010., 416600., 515950.,
      536150., 421880., 310810., 393490., 517400., 637150., 657350.,
      515000., 377770., 273944., 356640., 434600., 447560., 346528.,
      251000., 169062., 216840., 260010., 267330., 203112., 144078.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {394750., 414950., 515950.,
                                         536150., 637150., 657350.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186402.,  187500.,  257400.,  258960.,  332190.,  334260.,  365790.,
      368100.,  297144.,  299088.,  225858.,  227388.,  319864.,  321904.,
      432672.,  435520.,  547720.,  551440.,  586120.,  590160.,  469280.,
      472640.,  351736.,  354352.,  469790.,  473060.,  627080.,  631600.,
      783650.,  789500.,  823650.,  829900.,  652360.,  657520.,  483710.,
      487700.,  625310.,  630020.,  826760.,  833200.,  1023650., 1031900.,
      1063650., 1072300., 836680.,  843760.,  616190.,  621620.,  780830.,
      786980.,  1026440., 1034800., 1263650., 1274300., 1303650., 1314700.,
      1021000., 1030000., 748670.,  755540.,  542392.,  547888.,  705824.,
      713280.,  859720.,  869200.,  885320.,  895120.,  685088.,  693056.,
      495928.,  502000.,  333570.,  338124.,  427512.,  433680.,  512190.,
      520020.,  526590.,  534660.,  399672.,  406224.,  283170.,  288156.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      783650.,  789500.,  823650.,  829900.,  1023650., 1031900.,
      1063650., 1072300., 1263650., 1274300., 1303650., 1314700.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371706.,  372804.,  373902.,  375000.,  513240.,  514800.,  516360.,
      517920.,  662310.,  664380.,  666450.,  668520.,  729270.,  731580.,
      733890.,  736200.,  592344.,  594288.,  596232.,  598176.,  450186.,
      451716.,  453246.,  454776.,  637688.,  639728.,  641768.,  643808.,
      862496.,  865344.,  868192.,  871040.,  1091720., 1095440., 1099160.,
      1102880., 1168200., 1172240., 1176280., 1180320., 935200.,  938560.,
      941920.,  945280.,  700856.,  703472.,  706088.,  708704.,  936310.,
      939580.,  942850.,  946120.,  1249640., 1254160., 1258680., 1263200.,
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 1299560., 1304720., 1309880., 1315040., 963430.,  967420.,
      971410.,  975400.,  1245910., 1250620., 1255330., 1260040., 1647080.,
      1653520., 1659960., 1666400., 2039050., 2047300., 2055550., 2063800.,
      2118650., 2127300., 2135950., 2144600., 1666280., 1673360., 1680440.,
      1687520., 1226950., 1232380., 1237810., 1243240., 1555510., 1561660.,
      1567810., 1573960., 2044520., 2052880., 2061240., 2069600., 2516650.,
      2527300., 2537950., 2548600., 2596250., 2607300., 2618350., 2629400.,
      2033000., 2042000., 2051000., 2060000., 1490470., 1497340., 1504210.,
      1511080., 1079288., 1084784., 1090280., 1095776., 1404192., 1411648.,
      1419104., 1426560., 1709960., 1719440., 1728920., 1738400., 1760840.,
      1770640., 1780440., 1790240., 1362208., 1370176., 1378144., 1386112.,
      985784.,  991856.,  997928.,  1004000., 662586.,  667140.,  671694.,
      676248.,  848856.,  855024.,  861192.,  867360.,  1016550., 1024380.,
      1032210., 1040040., 1045110., 1053180., 1061250., 1069320., 792792.,
      799344.,  805896.,  812448.,  561354.,  566340.,  571326.,  576312.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300.,
      1653550., 1659800., 2039050., 2047300., 2055550., 2063800.,
      2118650., 2127300., 2135950., 2144600., 2516650., 2527300.,
      2537950., 2548600., 2596250., 2607300., 2618350., 2629400.};
  const std::array<int, 4> in_shape = {{1, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755.,  2404.,  3080.,  3350., 3620., 2920.,  2205., 3008., 4048., 5100.,
      5410.,  5720.,  4560.,  3404., 4420., 5880.,  7325., 7650., 7975., 6300.,
      4660.,  5890.,  7770.,  9600., 9925., 10250., 8050., 5920., 7360., 9660.,
      11875., 12200., 12525., 9800., 7180., 5156.,  6704., 8160., 8370., 8580.,
      6640.,  4808.,  3213.,  4120., 4940., 5060.,  5180., 3940., 2799.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325.,  7650.,  7975.,  9600., 9925.,
                                         10250., 11875., 12200., 12525.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  4694.,  4808.,  6010.,  6160.,  6535.,  6700.,  7060.,
      7240.,  5690.,  5840.,  4293.,  4410.,  5866.,  6016.,  7888.,  8096.,
      9930.,  10200., 10530., 10820., 11130., 11440., 8864.,  9120.,  6610.,
      6808.,  8600.,  8840.,  11430., 11760., 14225., 14650., 14850., 15300.,
      15475., 15950., 12210., 12600., 9020.,  9320.,  11435., 11780., 15070.,
      15540., 18600., 19200., 19225., 19850., 19850., 20500., 15570., 16100.,
      11435., 11840., 14270., 14720., 18710., 19320., 22975., 23750., 23600.,
      24400., 24225., 25050., 18930., 19600., 13850., 14360., 9910.,  10312.,
      12864., 13408., 15630., 16320., 16030., 16740., 16430., 17160., 12688.,
      13280., 9166.,  9616.,  6093.,  6426.,  7790.,  8240.,  9310.,  9880.,
      9535.,  10120., 9760.,  10360., 7394.,  7880.,  5229.,  5598.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225., 14650., 14850., 15300., 15475., 15950., 18600., 19200., 19225.,
      19850., 19850., 20500., 22975., 23750., 23600., 24400., 24225., 25050.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,  6858.,  6939.,  7020.,  9274.,  9388.,  9502.,  9616.,  11870.,
      12020., 12170., 12320., 12905., 13070., 13235., 13400., 13940., 14120.,
      14300., 14480., 11230., 11380., 11530., 11680., 8469.,  8586.,  8703.,
      8820.,  11582., 11732., 11882., 12032., 15568., 15776., 15984., 16192.,
      19590., 19860., 20130., 20400., 20770., 21060., 21350., 21640., 21950.,
      22260., 22570., 22880., 17472., 17728., 17984., 18240., 13022., 13220.,
      13418., 13616., 16960., 17200., 17440., 17680., 22530., 22860., 23190.,
      23520., 28025., 28450., 28875., 29300., 29250., 29700., 30150., 30600.,
      30475., 30950., 31425., 31900., 24030., 24420., 24810., 25200., 17740.,
      18040., 18340., 18640., 22525., 22870., 23215., 23560., 29670., 30140.,
      30610., 31080., 36600., 37200., 37800., 38400., 37825., 38450., 39075.,
      39700., 39050., 39700., 40350., 41000., 30610., 31140., 31670., 32200.,
      22465., 22870., 23275., 23680., 28090., 28540., 28990., 29440., 36810.,
      37420., 38030., 38640., 45175., 45950., 46725., 47500., 46400., 47200.,
      48000., 48800., 47625., 48450., 49275., 50100., 37190., 37860., 38530.,
      39200., 27190., 27700., 28210., 28720., 19418., 19820., 20222., 20624.,
      25184., 25728., 26272., 26816., 30570., 31260., 31950., 32640., 31350.,
      32060., 32770., 33480., 32130., 32860., 33590., 34320., 24784., 25376.,
      25968., 26560., 17882., 18332., 18782., 19232., 11853., 12186., 12519.,
      12852., 15130., 15580., 16030., 16480., 18050., 18620., 19190., 19760.,
      18485., 19070., 19655., 20240., 18920., 19520., 20120., 20720., 14302.,
      14788., 15274., 15760., 10089., 10458., 10827., 11196.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025., 28450., 28875., 29300., 29250., 29700., 30150., 30600., 30475.,
      30950., 31425., 31900., 36600., 37200., 37800., 38400., 37825., 38450.,
      39075., 39700., 39050., 39700., 40350., 41000., 45175., 45950., 46725.,
      47500., 46400., 47200., 48000., 48800., 47625., 48450., 49275., 50100.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13545., 18572., 23815., 25945., 28075., 22652., 17109., 23380., 31472.,
      39660., 42100., 44540., 35504., 26500., 34475., 45860., 57125., 59675.,
      62225., 49140., 36335., 46025., 60700., 74975., 77525., 80075., 62860.,
      46205., 57575., 75540., 92825., 95375., 97925., 76580., 56075., 40180.,
      52208., 63500., 65140., 66780., 51632., 37348., 24885., 31868., 38155.,
      39085., 40015., 30380., 21537.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {57125., 59675., 62225., 74975., 77525.,
                                         80075., 92825., 95375., 97925.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26775.,  27090.,  36700.,  37144.,  47045.,  47630.,  51245.,  51890.,
      55445.,  56150.,  44716.,  45304.,  33759.,  34218.,  46172.,  46760.,
      62128.,  62944.,  78260.,  79320.,  83060.,  84200.,  87860.,  89080.,
      70000.,  71008.,  52220.,  53000.,  68005.,  68950.,  90420.,  91720.,
      112575., 114250., 117575., 119350., 122575., 124450., 96740.,  98280.,
      71485.,  72670.,  90685.,  92050.,  119540., 121400., 147575., 149950.,
      152575., 155050., 157575., 160150., 123620., 125720., 90805.,  92410.,
      113365., 115150., 148660., 151080., 182575., 185650., 187575., 190750.,
      192575., 195850., 150500., 153160., 110125., 112150., 78764.,  80360.,
      102256., 104416., 124260., 127000., 127460., 130280., 130660., 133560.,
      100912., 103264., 72908.,  74696.,  48447.,  49770.,  61948.,  63736.,
      74045.,  76310.,  75845.,  78170.,  77645.,  80030.,  58828.,  60760.,
      41607.,  43074.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      112575., 114250., 117575., 119350., 122575., 124450.,
      147575., 149950., 152575., 155050., 157575., 160150.,
      182575., 185650., 187575., 190750., 192575., 195850.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53235.,  53550.,  53865.,  54180.,  72956.,  73400.,  73844.,  74288.,
      93505.,  94090.,  94675.,  95260.,  101845., 102490., 103135., 103780.,
      110185., 110890., 111595., 112300., 88844.,  89432.,  90020.,  90608.,
      67059.,  67518.,  67977.,  68436.,  91756.,  92344.,  92932.,  93520.,
      123440., 124256., 125072., 125888., 155460., 156520., 157580., 158640.,
      164980., 166120., 167260., 168400., 174500., 175720., 176940., 178160.,
      138992., 140000., 141008., 142016., 103660., 104440., 105220., 106000.,
      135065., 136010., 136955., 137900., 179540., 180840., 182140., 183440.,
      223475., 225150., 226825., 228500., 233375., 235150., 236925., 238700.,
      243275., 245150., 247025., 248900., 191940., 193480., 195020., 196560.,
      141785., 142970., 144155., 145340., 180005., 181370., 182735., 184100.,
      237220., 239080., 240940., 242800., 292775., 295150., 297525., 299900.,
      302675., 305150., 307625., 310100., 312575., 315150., 317725., 320300.,
      245140., 247240., 249340., 251440., 180005., 181610., 183215., 184820.,
      224945., 226730., 228515., 230300., 294900., 297320., 299740., 302160.,
      362075., 365150., 368225., 371300., 371975., 375150., 378325., 381500.,
      381875., 385150., 388425., 391700., 298340., 301000., 303660., 306320.,
      218225., 220250., 222275., 224300., 155932., 157528., 159124., 160720.,
      202352., 204512., 206672., 208832., 245780., 248520., 251260., 254000.,
      252100., 254920., 257740., 260560., 258420., 261320., 264220., 267120.,
      199472., 201824., 204176., 206528., 144028., 145816., 147604., 149392.,
      95571.,  96894.,  98217.,  99540.,  122108., 123896., 125684., 127472.,
      145825., 148090., 150355., 152620., 149365., 151690., 154015., 156340.,
      152905., 155290., 157675., 160060., 115724., 117656., 119588., 121520.,
      81747.,  83214.,  84681.,  86148.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      223475., 225150., 226825., 228500., 233375., 235150., 236925., 238700.,
      243275., 245150., 247025., 248900., 292775., 295150., 297525., 299900.,
      302675., 305150., 307625., 310100., 312575., 315150., 317725., 320300.,
      362075., 365150., 368225., 371300., 371975., 375150., 378325., 381500.,
      381875., 385150., 388425., 391700.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      106398., 145960., 187250., 204170., 221090., 178408., 134766.,
      184328., 248160., 312760., 332120., 351480., 280160., 209096.,
      272290., 362200., 451150., 471350., 491550., 388120., 286930.,
      363850., 479800., 592550., 612750., 632950., 496760., 365050.,
      455410., 597400., 733950., 754150., 774350., 605400., 443170.,
      317192., 412000., 500920., 513880., 526840., 407136., 294344.,
      195822., 250600., 299810., 307130., 314450., 238504., 168894.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {451150., 471350., 491550.,
                                         592550., 612750., 632950.,
                                         733950., 754150., 774350.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      211554.,  212796.,  290168.,  291920.,  372190.,  374500.,  405790.,
      408340.,  439390.,  442180.,  354488.,  356816.,  267714.,  269532.,
      366328.,  368656.,  493088.,  496320.,  621320.,  625520.,  659720.,
      664240.,  698120.,  702960.,  556320.,  560320.,  415096.,  418192.,
      540830.,  544580.,  719240.,  724400.,  895650.,  902300.,  935650.,
      942700.,  975650.,  983100.,  770120.,  776240.,  569150.,  573860.,
      722270.,  727700.,  952200.,  959600.,  1175650., 1185100., 1215650.,
      1225500., 1255650., 1265900., 985160.,  993520.,  723710.,  730100.,
      903710.,  910820.,  1185160., 1194800., 1455650., 1467900., 1495650.,
      1508300., 1535650., 1548700., 1200200., 1210800., 878270.,  886340.,
      628024.,  634384.,  815392.,  824000.,  990920.,  1001840., 1016520.,
      1027760., 1042120., 1053680., 804896.,  814272.,  581560.,  588688.,
      386370.,  391644.,  494072.,  501200.,  590590.,  599620.,  604990.,
      614260.,  619390.,  628900.,  469304.,  477008.,  331938.,  337788.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      895650.,  902300.,  935650.,  942700.,  975650.,  983100.,
      1175650., 1185100., 1215650., 1225500., 1255650., 1265900.,
      1455650., 1467900., 1495650., 1508300., 1535650., 1548700.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      421866.,  423108.,  424350.,  425592.,  578584.,  580336.,  582088.,
      583840.,  742070.,  744380.,  746690.,  749000.,  809030.,  811580.,
      814130.,  816680.,  875990.,  878780.,  881570.,  884360.,  706648.,
      708976.,  711304.,  713632.,  533610.,  535428.,  537246.,  539064.,
      730328.,  732656.,  734984.,  737312.,  982944.,  986176.,  989408.,
      992640.,  1238440., 1242640., 1246840., 1251040., 1314920., 1319440.,
      1323960., 1328480., 1391400., 1396240., 1401080., 1405920., 1108640.,
      1112640., 1116640., 1120640., 827096.,  830192.,  833288.,  836384.,
      1077910., 1081660., 1085410., 1089160., 1433320., 1438480., 1443640.,
      1448800., 1784650., 1791300., 1797950., 1804600., 1864250., 1871300.,
      1878350., 1885400., 1943850., 1951300., 1958750., 1966200., 1534120.,
      1540240., 1546360., 1552480., 1133590., 1138300., 1143010., 1147720.,
      1439110., 1444540., 1449970., 1455400., 1897000., 1904400., 1911800.,
      1919200., 2341850., 2351300., 2360750., 2370200., 2421450., 2431300.,
      2441150., 2451000., 2501050., 2511300., 2521550., 2531800., 1961960.,
      1970320., 1978680., 1987040., 1441030., 1447420., 1453810., 1460200.,
      1800310., 1807420., 1814530., 1821640., 2360680., 2370320., 2379960.,
      2389600., 2899050., 2911300., 2923550., 2935800., 2978650., 2991300.,
      3003950., 3016600., 3058250., 3071300., 3084350., 3097400., 2389800.,
      2400400., 2411000., 2421600., 1748470., 1756540., 1764610., 1772680.,
      1249688., 1256048., 1262408., 1268768., 1622176., 1630784., 1639392.,
      1648000., 1970920., 1981840., 1992760., 2003680., 2021800., 2033040.,
      2044280., 2055520., 2072680., 2084240., 2095800., 2107360., 1600416.,
      1609792., 1619168., 1628544., 1155992., 1163120., 1170248., 1177376.,
      767466.,  772740.,  778014.,  783288.,  981016.,  988144.,  995272.,
      1002400., 1172150., 1181180., 1190210., 1199240., 1200710., 1209980.,
      1219250., 1228520., 1229270., 1238780., 1248290., 1257800., 930904.,
      938608.,  946312.,  954016.,  658026.,  663876.,  669726.,  675576.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784650., 1791300., 1797950., 1804600., 1864250., 1871300.,
      1878350., 1885400., 1943850., 1951300., 1958750., 1966200.,
      2341850., 2351300., 2360750., 2370200., 2421450., 2431300.,
      2441150., 2451000., 2501050., 2511300., 2521550., 2531800.,
      2899050., 2911300., 2923550., 2935800., 2978650., 2991300.,
      3003950., 3016600., 3058250., 3071300., 3084350., 3097400.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1956., 2666.,  3400.,  3670.,  3940.,  4210.,  3380.,  2541.,
      3380., 4532.,  5690.,  6000.,  6310.,  6620.,  5260.,  3914.,
      4990., 6620.,  8225.,  8550.,  8875.,  9200.,  7250.,  5350.,
      6670., 8780.,  10825., 11150., 11475., 11800., 9250.,  6790.,
      8350., 10940., 13425., 13750., 14075., 14400., 11250., 8230.,
      5852., 7596.,  9230.,  9440.,  9650.,  9860.,  7620.,  5510.,
      3648., 4670.,  5590.,  5710.,  5830.,  5950.,  4520.,  3207.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8225.,  8550.,  8875.,  9200.,
                                         10825., 11150., 11475., 11800.,
                                         13425., 13750., 14075., 14400.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3822.,  3912.,  5206.,  5332.,  6635.,  6800.,  7160.,  7340.,  7685.,
      7880.,  8210.,  8420.,  6586.,  6760.,  4947.,  5082.,  6592.,  6760.,
      8832.,  9064.,  11080., 11380., 11680., 12000., 12280., 12620., 12880.,
      13240., 10224., 10520., 7600.,  7828.,  9710.,  9980.,  12870., 13240.,
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400., 14050.,
      14500., 10355., 10700., 12950., 13340., 17030., 17560., 20975., 21650.,
      21600., 22300., 22225., 22950., 22850., 23600., 17890., 18500., 13115.,
      13580., 16190., 16700., 21190., 21880., 25975., 26850., 26600., 27500.,
      27225., 28150., 27850., 28800., 21730., 22500., 15875., 16460., 11248.,
      11704., 14576., 15192., 17680., 18460., 18080., 18880., 18480., 19300.,
      18880., 19720., 14560., 15240., 10504., 11020., 6918.,  7296.,  8830.,
      9340.,  10535., 11180., 10760., 11420., 10985., 11660., 11210., 11900.,
      8482.,  9040.,  5991.,  6414.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400.,
      20975., 21650., 21600., 22300., 22225., 22950., 22850., 23600.,
      25975., 26850., 26600., 27500., 27225., 28150., 27850., 28800.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7554.,  7644.,  7734.,  7824.,  10286., 10412., 10538., 10664., 13105.,
      13270., 13435., 13600., 14140., 14320., 14500., 14680., 15175., 15370.,
      15565., 15760., 16210., 16420., 16630., 16840., 12998., 13172., 13346.,
      13520., 9759.,  9894.,  10029., 10164., 13016., 13184., 13352., 13520.,
      17432., 17664., 17896., 18128., 21860., 22160., 22460., 22760., 23040.,
      23360., 23680., 24000., 24220., 24560., 24900., 25240., 25400., 25760.,
      26120., 26480., 20152., 20448., 20744., 21040., 14972., 15200., 15428.,
      15656., 19150., 19420., 19690., 19960., 25370., 25740., 26110., 26480.,
      31475., 31950., 32425., 32900., 32700., 33200., 33700., 34200., 33925.,
      34450., 34975., 35500., 35150., 35700., 36250., 36800., 27650., 28100.,
      28550., 29000., 20365., 20710., 21055., 21400., 25510., 25900., 26290.,
      26680., 33530., 34060., 34590., 35120., 41275., 41950., 42625., 43300.,
      42500., 43200., 43900., 44600., 43725., 44450., 45175., 45900., 44950.,
      45700., 46450., 47200., 35170., 35780., 36390., 37000., 25765., 26230.,
      26695., 27160., 31870., 32380., 32890., 33400., 41690., 42380., 43070.,
      43760., 51075., 51950., 52825., 53700., 52300., 53200., 54100., 55000.,
      53525., 54450., 55375., 56300., 54750., 55700., 56650., 57600., 42690.,
      43460., 44230., 45000., 31165., 31750., 32335., 32920., 22040., 22496.,
      22952., 23408., 28536., 29152., 29768., 30384., 34580., 35360., 36140.,
      36920., 35360., 36160., 36960., 37760., 36140., 36960., 37780., 38600.,
      36920., 37760., 38600., 39440., 28440., 29120., 29800., 30480., 20492.,
      21008., 21524., 22040., 13458., 13836., 14214., 14592., 17150., 17660.,
      18170., 18680., 20425., 21070., 21715., 22360., 20860., 21520., 22180.,
      22840., 21295., 21970., 22645., 23320., 21730., 22420., 23110., 23800.,
      16406., 16964., 17522., 18080., 11559., 11982., 12405., 12828.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475., 31950., 32425., 32900., 32700., 33200., 33700., 34200.,
      33925., 34450., 34975., 35500., 35150., 35700., 36250., 36800.,
      41275., 41950., 42625., 43300., 42500., 43200., 43900., 44600.,
      43725., 44450., 45175., 45900., 44950., 45700., 46450., 47200.,
      51075., 51950., 52825., 53700., 52300., 53200., 54100., 55000.,
      53525., 54450., 55375., 56300., 54750., 55700., 56650., 57600.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15135., 20644., 26345.,  28475.,  30605.,  32735.,  26284., 19761.,
      26320., 35296., 44320.,  46760.,  49200.,  51640.,  41024., 30520.,
      38975., 51700., 64225.,  66775.,  69325.,  71875.,  56620., 41765.,
      52175., 68660., 84625.,  87175.,  89725.,  92275.,  72300., 53045.,
      65375., 85620., 105025., 107575., 110125., 112675., 87980., 64325.,
      45640., 59200., 71880.,  73520.,  75160.,  76800.,  59296., 42832.,
      28275., 36148., 43205.,  44135.,  45065.,  45995.,  34876., 24693.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {64225.,  66775.,  69325.,  71875.,
                                         84625.,  87175.,  89725.,  92275.,
                                         105025., 107575., 110125., 112675.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29919.,  30270.,  40796.,  41288.,  52045.,  52690.,  56245.,  56950.,
      60445.,  61210.,  64645.,  65470.,  51884.,  52568.,  38991.,  39522.,
      51980.,  52640.,  69680.,  70592.,  87460.,  88640.,  92260.,  93520.,
      97060.,  98400.,  101860., 103280., 80880.,  82048.,  60140.,  61040.,
      76885.,  77950.,  101940., 103400., 126575., 128450., 131575., 133550.,
      136575., 138650., 141575., 143750., 111460., 113240., 82165.,  83530.,
      102805., 104350., 135220., 137320., 166575., 169250., 171575., 174350.,
      176575., 179450., 181575., 184550., 142180., 144600., 104245., 106090.,
      128725., 130750., 168500., 171240., 206575., 210050., 211575., 215150.,
      216575., 220250., 221575., 225350., 172900., 175960., 126325., 128650.,
      89468.,  91280.,  115952., 118400., 140660., 143760., 143860., 147040.,
      147060., 150320., 150260., 153600., 115888., 118592., 83612.,  85664.,
      55047.,  56550.,  70268.,  72296.,  83845.,  86410.,  85645.,  88270.,
      87445.,  90130.,  89245.,  91990.,  67532.,  69752.,  47703.,  49386.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      126575., 128450., 131575., 133550., 136575., 138650., 141575., 143750.,
      166575., 169250., 171575., 174350., 176575., 179450., 181575., 184550.,
      206575., 210050., 211575., 215150., 216575., 220250., 221575., 225350.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      59487.,  59838.,  60189.,  60540.,  81100.,  81592.,  82084.,  82576.,
      103445., 104090., 104735., 105380., 111785., 112490., 113195., 113900.,
      120125., 120890., 121655., 122420., 128465., 129290., 130115., 130940.,
      103084., 103768., 104452., 105136., 77451.,  77982.,  78513.,  79044.,
      103300., 103960., 104620., 105280., 138448., 139360., 140272., 141184.,
      173740., 174920., 176100., 177280., 183260., 184520., 185780., 187040.,
      192780., 194120., 195460., 196800., 202300., 203720., 205140., 206560.,
      160592., 161760., 162928., 164096., 119380., 120280., 121180., 122080.,
      152705., 153770., 154835., 155900., 202420., 203880., 205340., 206800.,
      251275., 253150., 255025., 256900., 261175., 263150., 265125., 267100.,
      271075., 273150., 275225., 277300., 280975., 283150., 285325., 287500.,
      221140., 222920., 224700., 226480., 162965., 164330., 165695., 167060.,
      204065., 205610., 207155., 208700., 268340., 270440., 272540., 274640.,
      330475., 333150., 335825., 338500., 340375., 343150., 345925., 348700.,
      350275., 353150., 356025., 358900., 360175., 363150., 366125., 369100.,
      281940., 284360., 286780., 289200., 206645., 208490., 210335., 212180.,
      255425., 257450., 259475., 261500., 334260., 337000., 339740., 342480.,
      409675., 413150., 416625., 420100., 419575., 423150., 426725., 430300.,
      429475., 433150., 436825., 440500., 439375., 443150., 446925., 450700.,
      342740., 345800., 348860., 351920., 250325., 252650., 254975., 257300.,
      177124., 178936., 180748., 182560., 229456., 231904., 234352., 236800.,
      278220., 281320., 284420., 287520., 284540., 287720., 290900., 294080.,
      290860., 294120., 297380., 300640., 297180., 300520., 303860., 307200.,
      229072., 231776., 234480., 237184., 165172., 167224., 169276., 171328.,
      108591., 110094., 111597., 113100., 138508., 140536., 142564., 144592.,
      165125., 167690., 170255., 172820., 168665., 171290., 173915., 176540.,
      172205., 174890., 177575., 180260., 175745., 178490., 181235., 183980.,
      132844., 135064., 137284., 139504., 93723.,  95406.,  97089.,  98772.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      251275., 253150., 255025., 256900., 261175., 263150., 265125., 267100.,
      271075., 273150., 275225., 277300., 280975., 283150., 285325., 287500.,
      330475., 333150., 335825., 338500., 340375., 343150., 345925., 348700.,
      350275., 353150., 356025., 358900., 360175., 363150., 366125., 369100.,
      409675., 413150., 416625., 420100., 419575., 423150., 426725., 430300.,
      429475., 433150., 436825., 440500., 439375., 443150., 446925., 450700.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      119046., 162440., 207370., 224290., 241210., 258130., 207272., 155838.,
      207704., 278560., 349800., 369160., 388520., 407880., 324000., 241016.,
      308050., 408600., 507550., 527750., 547950., 568150., 447480., 330010.,
      412690., 543000., 669150., 689350., 709550., 729750., 571640., 419290.,
      517330., 677400., 830750., 850950., 871150., 891350., 695800., 508570.,
      360440., 467360., 567240., 580200., 593160., 606120., 467744., 337688.,
      222582., 284360., 339610., 346930., 354250., 361570., 273896., 193710.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {507550., 527750., 547950., 568150.,
                                         669150., 689350., 709550., 729750.,
                                         830750., 850950., 871150., 891350.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      236706.,  238092.,  322936.,  324880.,  412190.,  414740.,  445790.,
      448580.,  479390.,  482420.,  512990.,  516260.,  411832.,  414544.,
      309570.,  311676.,  412792.,  415408.,  553504.,  557120.,  694920.,
      699600.,  733320.,  738320.,  771720.,  777040.,  810120.,  815760.,
      643360.,  648000.,  478456.,  482032.,  611870.,  616100.,  811400.,
      817200.,  1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 887880.,  894960.,  654590.,  660020.,  819230.,
      825380.,  1077640., 1086000., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500., 1133640., 1143280., 831230.,
      838580.,  1026590., 1034660., 1343880., 1354800., 1647650., 1661500.,
      1687650., 1701900., 1727650., 1742300., 1767650., 1782700., 1379400.,
      1391600., 1007870., 1017140., 713656.,  720880.,  924960.,  934720.,
      1122120., 1134480., 1147720., 1160400., 1173320., 1186320., 1198920.,
      1212240., 924704.,  935488.,  667192.,  675376.,  439170.,  445164.,
      560632.,  568720.,  668990.,  679220.,  683390.,  693860.,  697790.,
      708500.,  712190.,  723140.,  538936.,  547792.,  380706.,  387420.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500., 1647650., 1661500.,
      1687650., 1701900., 1727650., 1742300., 1767650., 1782700.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      472026.,  473412.,  474798.,  476184.,  643928.,  645872.,  647816.,
      649760.,  821830.,  824380.,  826930.,  829480.,  888790.,  891580.,
      894370.,  897160.,  955750.,  958780.,  961810.,  964840.,  1022710.,
      1025980., 1029250., 1032520., 820952.,  823664.,  826376.,  829088.,
      617034.,  619140.,  621246.,  623352.,  822968.,  825584.,  828200.,
      830816.,  1103392., 1107008., 1110624., 1114240., 1385160., 1389840.,
      1394520., 1399200., 1461640., 1466640., 1471640., 1476640., 1538120.,
      1543440., 1548760., 1554080., 1614600., 1620240., 1625880., 1631520.,
      1282080., 1286720., 1291360., 1296000., 953336.,  956912.,  960488.,
      964064.,  1219510., 1223740., 1227970., 1232200., 1617000., 1622800.,
      1628600., 1634400., 2007850., 2015300., 2022750., 2030200., 2087450.,
      2095300., 2103150., 2111000., 2167050., 2175300., 2183550., 2191800.,
      2246650., 2255300., 2263950., 2272600., 1768680., 1775760., 1782840.,
      1789920., 1303750., 1309180., 1314610., 1320040., 1632310., 1638460.,
      1644610., 1650760., 2146920., 2155280., 2163640., 2172000., 2644650.,
      2655300., 2665950., 2676600., 2724250., 2735300., 2746350., 2757400.,
      2803850., 2815300., 2826750., 2838200., 2883450., 2895300., 2907150.,
      2919000., 2257640., 2267280., 2276920., 2286560., 1655110., 1662460.,
      1669810., 1677160., 2045110., 2053180., 2061250., 2069320., 2676840.,
      2687760., 2698680., 2709600., 3281450., 3295300., 3309150., 3323000.,
      3361050., 3375300., 3389550., 3403800., 3440650., 3455300., 3469950.,
      3484600., 3520250., 3535300., 3550350., 3565400., 2746600., 2758800.,
      2771000., 2783200., 2006470., 2015740., 2025010., 2034280., 1420088.,
      1427312., 1434536., 1441760., 1840160., 1849920., 1859680., 1869440.,
      2231880., 2244240., 2256600., 2268960., 2282760., 2295440., 2308120.,
      2320800., 2333640., 2346640., 2359640., 2372640., 2384520., 2397840.,
      2411160., 2424480., 1838624., 1849408., 1860192., 1870976., 1326200.,
      1334384., 1342568., 1350752., 872346.,  878340.,  884334.,  890328.,
      1113176., 1121264., 1129352., 1137440., 1327750., 1337980., 1348210.,
      1358440., 1356310., 1366780., 1377250., 1387720., 1384870., 1395580.,
      1406290., 1417000., 1413430., 1424380., 1435330., 1446280., 1069016.,
      1077872., 1086728., 1095584., 754698.,  761412.,  768126.,  774840.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2007850., 2015300., 2022750., 2030200., 2087450., 2095300., 2103150.,
      2111000., 2167050., 2175300., 2183550., 2191800., 2246650., 2255300.,
      2263950., 2272600., 2644650., 2655300., 2665950., 2676600., 2724250.,
      2735300., 2746350., 2757400., 2803850., 2815300., 2826750., 2838200.,
      2883450., 2895300., 2907150., 2919000., 3281450., 3295300., 3309150.,
      3323000., 3361050., 3375300., 3389550., 3403800., 3440650., 3455300.,
      3469950., 3484600., 3520250., 3535300., 3550350., 3565400.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1554., 2142.,  2760.,  3030.,  2460., 1869., 2636.,  3564.,  4510., 4820.,
      3860., 2894.,  3850.,  5140.,  6425., 6750., 5350.,  3970.,  5110., 6760.,
      8375., 8700.,  6850.,  5050.,  6370., 8380., 10325., 10650., 8350., 6130.,
      7630., 10000., 12275., 12600., 9850., 7210., 5288.,  6868.,  8350., 8560.,
      6620., 4790.,  3264.,  4182.,  5010., 5130., 3900.,  2769.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6425.,  6750.,  8375.,  8700.,
                                         10325., 10650., 12275., 12600.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3036.,  3108.,  4182.,  4284.,  5385.,  5520.,  5910.,  6060.,  4794.,
      4920.,  3639.,  3738.,  5140.,  5272.,  6944.,  7128.,  8780.,  9020.,
      9380.,  9640.,  7504.,  7720.,  5620.,  5788.,  7490.,  7700.,  9990.,
      10280., 12475., 12850., 13100., 13500., 10370., 10700., 7685.,  7940.,
      9920.,  10220., 13110., 13520., 16225., 16750., 16850., 17400., 13250.,
      13700., 9755.,  10100., 12350., 12740., 16230., 16760., 19975., 20650.,
      20600., 21300., 16130., 16700., 11825., 12260., 14780., 15260., 19350.,
      20000., 23725., 24550., 24350., 25200., 19010., 19700., 13895., 14420.,
      10156., 10576., 13168., 13736., 15980., 16700., 16380., 17120., 12640.,
      13240., 9124.,  9580.,  6186.,  6528.,  7902.,  8364.,  9435.,  10020.,
      9660.,  10260., 7314.,  7800.,  5169.,  5538.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12475., 12850., 13100., 13500., 16225., 16750., 16850., 17400.,
      19975., 20650., 20600., 21300., 23725., 24550., 24350., 25200.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6000.,  6072.,  6144.,  6216.,  8262.,  8364.,  8466.,  8568.,  10635.,
      10770., 10905., 11040., 11670., 11820., 11970., 12120., 9462.,  9588.,
      9714.,  9840.,  7179.,  7278.,  7377.,  7476.,  10148., 10280., 10412.,
      10544., 13704., 13888., 14072., 14256., 17320., 17560., 17800., 18040.,
      18500., 18760., 19020., 19280., 14792., 15008., 15224., 15440., 11072.,
      11240., 11408., 11576., 14770., 14980., 15190., 15400., 19690., 19980.,
      20270., 20560., 24575., 24950., 25325., 25700., 25800., 26200., 26600.,
      27000., 20410., 20740., 21070., 21400., 15115., 15370., 15625., 15880.,
      19540., 19840., 20140., 20440., 25810., 26220., 26630., 27040., 31925.,
      32450., 32975., 33500., 33150., 33700., 34250., 34800., 26050., 26500.,
      26950., 27400., 19165., 19510., 19855., 20200., 24310., 24700., 25090.,
      25480., 31930., 32460., 32990., 33520., 39275., 39950., 40625., 41300.,
      40500., 41200., 41900., 42600., 31690., 32260., 32830., 33400., 23215.,
      23650., 24085., 24520., 29080., 29560., 30040., 30520., 38050., 38700.,
      39350., 40000., 46625., 47450., 48275., 49100., 47850., 48700., 49550.,
      50400., 37330., 38020., 38710., 39400., 27265., 27790., 28315., 28840.,
      19892., 20312., 20732., 21152., 25768., 26336., 26904., 27472., 31240.,
      31960., 32680., 33400., 32020., 32760., 33500., 34240., 24680., 25280.,
      25880., 26480., 17792., 18248., 18704., 19160., 12030., 12372., 12714.,
      13056., 15342., 15804., 16266., 16728., 18285., 18870., 19455., 20040.,
      18720., 19320., 19920., 20520., 14142., 14628., 15114., 15600., 9969.,
      10338., 10707., 11076.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24575., 24950., 25325., 25700., 25800., 26200., 26600., 27000.,
      31925., 32450., 32975., 33500., 33150., 33700., 34250., 34800.,
      39275., 39950., 40625., 41300., 40500., 41200., 41900., 42600.,
      46625., 47450., 48275., 49100., 47850., 48700., 49550., 50400.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11955., 16500., 21285., 23415., 19020., 14457., 20440., 27648.,
      35000., 37440., 29984., 22480., 29975., 40020., 50025., 52575.,
      41660., 30905., 39875., 52740., 65325., 67875., 53420., 39365.,
      49775., 65460., 80625., 83175., 65180., 47825., 59675., 78180.,
      95925., 98475., 76940., 56285., 41200., 53472., 64960., 66600.,
      51456., 37192., 25275., 32340., 38685., 39615., 30060., 21297.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {50025., 52575., 65325., 67875.,
                                         80625., 83175., 95925., 98475.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23631.,  23910.,  32604.,  33000.,  42045.,  42570.,  46245.,  46830.,
      37548.,  38040.,  28527.,  28914.,  40364.,  40880.,  54576.,  55296.,
      69060.,  70000.,  73860.,  74880.,  59120.,  59968.,  44300.,  44960.,
      59125.,  59950.,  78900.,  80040.,  98575.,  100050., 103575., 105150.,
      82020.,  83320.,  60805.,  61810.,  78565.,  79750.,  103860., 105480.,
      128575., 130650., 133575., 135750., 105060., 106840., 77365.,  78730.,
      98005.,  99550.,  128820., 130920., 158575., 161250., 163575., 166350.,
      128100., 130360., 93925.,  95650.,  117445., 119350., 153780., 156360.,
      188575., 191850., 193575., 196950., 151140., 153880., 110485., 112570.,
      80732.,  82400.,  104688., 106944., 127060., 129920., 130260., 133200.,
      100528., 102912., 72572.,  74384.,  49191.,  50550.,  62844.,  64680.,
      75045.,  77370.,  76845.,  79230.,  58188.,  60120.,  41127.,  42594.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      98575.,  100050., 103575., 105150., 128575., 130650., 133575., 135750.,
      158575., 161250., 163575., 166350., 188575., 191850., 193575., 196950.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46983.,  47262.,  47541.,  47820.,  64812.,  65208.,  65604.,  66000.,
      83565.,  84090.,  84615.,  85140.,  91905.,  92490.,  93075.,  93660.,
      74604.,  75096.,  75588.,  76080.,  56667.,  57054.,  57441.,  57828.,
      80212.,  80728.,  81244.,  81760.,  108432., 109152., 109872., 110592.,
      137180., 138120., 139060., 140000., 146700., 147720., 148740., 149760.,
      117392., 118240., 119088., 119936., 87940.,  88600.,  89260.,  89920.,
      117425., 118250., 119075., 119900., 156660., 157800., 158940., 160080.,
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      162740., 164040., 165340., 166640., 120605., 121610., 122615., 123620.,
      155945., 157130., 158315., 159500., 206100., 207720., 209340., 210960.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.,
      208340., 210120., 211900., 213680., 153365., 154730., 156095., 157460.,
      194465., 196010., 197555., 199100., 255540., 257640., 259740., 261840.,
      314475., 317150., 319825., 322500., 324375., 327150., 329925., 332700.,
      253940., 256200., 258460., 260720., 186125., 187850., 189575., 191300.,
      232985., 234890., 236795., 238700., 304980., 307560., 310140., 312720.,
      373875., 377150., 380425., 383700., 383775., 387150., 390525., 393900.,
      299540., 302280., 305020., 307760., 218885., 220970., 223055., 225140.,
      159796., 161464., 163132., 164800., 207120., 209376., 211632., 213888.,
      251260., 254120., 256980., 259840., 257580., 260520., 263460., 266400.,
      198672., 201056., 203440., 205824., 143332., 145144., 146956., 148768.,
      97023.,  98382.,  99741.,  101100., 123852., 125688., 127524., 129360.,
      147765., 150090., 152415., 154740., 151305., 153690., 156075., 158460.,
      114444., 116376., 118308., 120240., 80787.,  82254.,  83721.,  85188.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.,
      314475., 317150., 319825., 322500., 324375., 327150., 329925., 332700.,
      373875., 377150., 380425., 383700., 383775., 387150., 390525., 393900.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      93750.,  129480., 167130., 184050., 149544., 113694., 160952., 217760.,
      275720., 295080., 236320., 177176., 236530., 315800., 394750., 414950.,
      328760., 243850., 315010., 416600., 515950., 536150., 421880., 310810.,
      393490., 517400., 637150., 657350., 515000., 377770., 471970., 618200.,
      758350., 778550., 608120., 444730., 325208., 421920., 512360., 525320.,
      405664., 293048., 198870., 254280., 303930., 311250., 235944., 166974.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {394750., 414950., 515950., 536150.,
                                         637150., 657350., 758350., 778550.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186402.,  187500.,  257400.,  258960.,  332190.,  334260.,  365790.,
      368100.,  297144.,  299088.,  225858.,  227388.,  319864.,  321904.,
      432672.,  435520.,  547720.,  551440.,  586120.,  590160.,  469280.,
      472640.,  351736.,  354352.,  469790.,  473060.,  627080.,  631600.,
      783650.,  789500.,  823650.,  829900.,  652360.,  657520.,  483710.,
      487700.,  625310.,  630020.,  826760.,  833200.,  1023650., 1031900.,
      1063650., 1072300., 836680.,  843760.,  616190.,  621620.,  780830.,
      786980.,  1026440., 1034800., 1263650., 1274300., 1303650., 1314700.,
      1021000., 1030000., 748670.,  755540.,  936350.,  943940.,  1226120.,
      1236400., 1503650., 1516700., 1543650., 1557100., 1205320., 1216240.,
      881150.,  889460.,  643768.,  650416.,  834848.,  843840.,  1013320.,
      1024720., 1038920., 1050640., 801824.,  811328.,  578872.,  586096.,
      392322.,  397740.,  501240.,  508560.,  598590.,  607860.,  612990.,
      622500.,  464184.,  471888.,  328098.,  333948.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      783650.,  789500.,  823650.,  829900.,  1023650., 1031900.,
      1063650., 1072300., 1263650., 1274300., 1303650., 1314700.,
      1503650., 1516700., 1543650., 1557100.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371706.,  372804.,  373902.,  375000.,  513240.,  514800.,  516360.,
      517920.,  662310.,  664380.,  666450.,  668520.,  729270.,  731580.,
      733890.,  736200.,  592344.,  594288.,  596232.,  598176.,  450186.,
      451716.,  453246.,  454776.,  637688.,  639728.,  641768.,  643808.,
      862496.,  865344.,  868192.,  871040.,  1091720., 1095440., 1099160.,
      1102880., 1168200., 1172240., 1176280., 1180320., 935200.,  938560.,
      941920.,  945280.,  700856.,  703472.,  706088.,  708704.,  936310.,
      939580.,  942850.,  946120.,  1249640., 1254160., 1258680., 1263200.,
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 1299560., 1304720., 1309880., 1315040., 963430.,  967420.,
      971410.,  975400.,  1245910., 1250620., 1255330., 1260040., 1647080.,
      1653520., 1659960., 1666400., 2039050., 2047300., 2055550., 2063800.,
      2118650., 2127300., 2135950., 2144600., 1666280., 1673360., 1680440.,
      1687520., 1226950., 1232380., 1237810., 1243240., 1555510., 1561660.,
      1567810., 1573960., 2044520., 2052880., 2061240., 2069600., 2516650.,
      2527300., 2537950., 2548600., 2596250., 2607300., 2618350., 2629400.,
      2033000., 2042000., 2051000., 2060000., 1490470., 1497340., 1504210.,
      1511080., 1865110., 1872700., 1880290., 1887880., 2441960., 2452240.,
      2462520., 2472800., 2994250., 3007300., 3020350., 3033400., 3073850.,
      3087300., 3100750., 3114200., 2399720., 2410640., 2421560., 2432480.,
      1753990., 1762300., 1770610., 1778920., 1280888., 1287536., 1294184.,
      1300832., 1660704., 1669696., 1678688., 1687680., 2015240., 2026640.,
      2038040., 2049440., 2066120., 2077840., 2089560., 2101280., 1594144.,
      1603648., 1613152., 1622656., 1150520., 1157744., 1164968., 1172192.,
      779226.,  784644.,  790062.,  795480.,  995160.,  1002480., 1009800.,
      1017120., 1187910., 1197180., 1206450., 1215720., 1216470., 1225980.,
      1235490., 1245000., 920664.,  928368.,  936072.,  943776.,  650346.,
      656196.,  662046.,  667896.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 2039050., 2047300., 2055550., 2063800., 2118650., 2127300.,
      2135950., 2144600., 2516650., 2527300., 2537950., 2548600., 2596250.,
      2607300., 2618350., 2629400., 2994250., 3007300., 3020350., 3033400.,
      3073850., 3087300., 3100750., 3114200.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755.,  2404.,  3080., 3350., 3620.,  2920.,  2205.,  3008.,
      4048.,  5100.,  5410., 5720., 4560.,  3404.,  4420.,  5880.,
      7325.,  7650.,  7975., 6300., 4660.,  5890.,  7770.,  9600.,
      9925.,  10250., 8050., 5920., 7360.,  9660.,  11875., 12200.,
      12525., 9800.,  7180., 8830., 11550., 14150., 14475., 14800.,
      11550., 8440.,  6122., 7936., 9630.,  9840.,  10050., 7760.,
      5606.,  3780.,  4834., 5780., 5900.,  6020.,  4570.,  3240.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325.,  7650.,  7975.,  9600.,
                                         9925.,  10250., 11875., 12200.,
                                         12525., 14150., 14475., 14800.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  4694.,  4808.,  6010.,  6160.,  6535.,  6700.,  7060.,
      7240.,  5690.,  5840.,  4293.,  4410.,  5866.,  6016.,  7888.,  8096.,
      9930.,  10200., 10530., 10820., 11130., 11440., 8864.,  9120.,  6610.,
      6808.,  8600.,  8840.,  11430., 11760., 14225., 14650., 14850., 15300.,
      15475., 15950., 12210., 12600., 9020.,  9320.,  11435., 11780., 15070.,
      15540., 18600., 19200., 19225., 19850., 19850., 20500., 15570., 16100.,
      11435., 11840., 14270., 14720., 18710., 19320., 22975., 23750., 23600.,
      24400., 24225., 25050., 18930., 19600., 13850., 14360., 17105., 17660.,
      22350., 23100., 27350., 28300., 27975., 28950., 28600., 29600., 22290.,
      23100., 16265., 16880., 11758., 12244., 15216., 15872., 18430., 19260.,
      18830., 19680., 19230., 20100., 14816., 15520., 10678., 11212., 7164.,
      7560.,  9134.,  9668.,  10885., 11560., 11110., 11800., 11335., 12040.,
      8570.,  9140.,  6048.,  6480.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225., 14650., 14850., 15300., 15475., 15950., 18600., 19200.,
      19225., 19850., 19850., 20500., 22975., 23750., 23600., 24400.,
      24225., 25050., 27350., 28300., 27975., 28950., 28600., 29600.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,  6858.,  6939.,  7020.,  9274.,  9388.,  9502.,  9616.,  11870.,
      12020., 12170., 12320., 12905., 13070., 13235., 13400., 13940., 14120.,
      14300., 14480., 11230., 11380., 11530., 11680., 8469.,  8586.,  8703.,
      8820.,  11582., 11732., 11882., 12032., 15568., 15776., 15984., 16192.,
      19590., 19860., 20130., 20400., 20770., 21060., 21350., 21640., 21950.,
      22260., 22570., 22880., 17472., 17728., 17984., 18240., 13022., 13220.,
      13418., 13616., 16960., 17200., 17440., 17680., 22530., 22860., 23190.,
      23520., 28025., 28450., 28875., 29300., 29250., 29700., 30150., 30600.,
      30475., 30950., 31425., 31900., 24030., 24420., 24810., 25200., 17740.,
      18040., 18340., 18640., 22525., 22870., 23215., 23560., 29670., 30140.,
      30610., 31080., 36600., 37200., 37800., 38400., 37825., 38450., 39075.,
      39700., 39050., 39700., 40350., 41000., 30610., 31140., 31670., 32200.,
      22465., 22870., 23275., 23680., 28090., 28540., 28990., 29440., 36810.,
      37420., 38030., 38640., 45175., 45950., 46725., 47500., 46400., 47200.,
      48000., 48800., 47625., 48450., 49275., 50100., 37190., 37860., 38530.,
      39200., 27190., 27700., 28210., 28720., 33655., 34210., 34765., 35320.,
      43950., 44700., 45450., 46200., 53750., 54700., 55650., 56600., 54975.,
      55950., 56925., 57900., 56200., 57200., 58200., 59200., 43770., 44580.,
      45390., 46200., 31915., 32530., 33145., 33760., 23030., 23516., 24002.,
      24488., 29776., 30432., 31088., 31744., 36030., 36860., 37690., 38520.,
      36810., 37660., 38510., 39360., 37590., 38460., 39330., 40200., 28928.,
      29632., 30336., 31040., 20822., 21356., 21890., 22424., 13932., 14328.,
      14724., 15120., 17734., 18268., 18802., 19336., 21095., 21770., 22445.,
      23120., 21530., 22220., 22910., 23600., 21965., 22670., 23375., 24080.,
      16570., 17140., 17710., 18280., 11664., 12096., 12528., 12960.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025., 28450., 28875., 29300., 29250., 29700., 30150., 30600.,
      30475., 30950., 31425., 31900., 36600., 37200., 37800., 38400.,
      37825., 38450., 39075., 39700., 39050., 39700., 40350., 41000.,
      45175., 45950., 46725., 47500., 46400., 47200., 48000., 48800.,
      47625., 48450., 49275., 50100., 53750., 54700., 55650., 56600.,
      54975., 55950., 56925., 57900., 56200., 57200., 58200., 59200.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13545., 18572., 23815., 25945., 28075., 22652.,  17109.,  23380.,
      31472., 39660., 42100., 44540., 35504., 26500.,  34475.,  45860.,
      57125., 59675., 62225., 49140., 36335., 46025.,  60700.,  74975.,
      77525., 80075., 62860., 46205., 57575., 75540.,  92825.,  95375.,
      97925., 76580., 56075., 69125., 90380., 110675., 113225., 115775.,
      90300., 65945., 47740., 61840., 74980., 76620.,  78260.,  60368.,
      43564., 29295., 37412., 44665., 45595., 46525.,  35252.,  24939.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {57125., 59675.,  62225.,  74975.,
                                         77525., 80075.,  92825.,  95375.,
                                         97925., 110675., 113225., 115775.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26775.,  27090.,  36700.,  37144.,  47045.,  47630.,  51245.,  51890.,
      55445.,  56150.,  44716.,  45304.,  33759.,  34218.,  46172.,  46760.,
      62128.,  62944.,  78260.,  79320.,  83060.,  84200.,  87860.,  89080.,
      70000.,  71008.,  52220.,  53000.,  68005.,  68950.,  90420.,  91720.,
      112575., 114250., 117575., 119350., 122575., 124450., 96740.,  98280.,
      71485.,  72670.,  90685.,  92050.,  119540., 121400., 147575., 149950.,
      152575., 155050., 157575., 160150., 123620., 125720., 90805.,  92410.,
      113365., 115150., 148660., 151080., 182575., 185650., 187575., 190750.,
      192575., 195850., 150500., 153160., 110125., 112150., 136045., 138250.,
      177780., 180760., 217575., 221350., 222575., 226450., 227575., 231550.,
      177380., 180600., 129445., 131890., 93548.,  95480.,  121072., 123680.,
      146660., 149960., 149860., 153240., 153060., 156520., 117936., 120736.,
      85004.,  87128.,  57015.,  58590.,  72700.,  74824.,  86645.,  89330.,
      88445.,  91190.,  90245.,  93050.,  68236.,  70504.,  48159.,  49878.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      112575., 114250., 117575., 119350., 122575., 124450., 147575., 149950.,
      152575., 155050., 157575., 160150., 182575., 185650., 187575., 190750.,
      192575., 195850., 217575., 221350., 222575., 226450., 227575., 231550.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53235.,  53550.,  53865.,  54180.,  72956.,  73400.,  73844.,  74288.,
      93505.,  94090.,  94675.,  95260.,  101845., 102490., 103135., 103780.,
      110185., 110890., 111595., 112300., 88844.,  89432.,  90020.,  90608.,
      67059.,  67518.,  67977.,  68436.,  91756.,  92344.,  92932.,  93520.,
      123440., 124256., 125072., 125888., 155460., 156520., 157580., 158640.,
      164980., 166120., 167260., 168400., 174500., 175720., 176940., 178160.,
      138992., 140000., 141008., 142016., 103660., 104440., 105220., 106000.,
      135065., 136010., 136955., 137900., 179540., 180840., 182140., 183440.,
      223475., 225150., 226825., 228500., 233375., 235150., 236925., 238700.,
      243275., 245150., 247025., 248900., 191940., 193480., 195020., 196560.,
      141785., 142970., 144155., 145340., 180005., 181370., 182735., 184100.,
      237220., 239080., 240940., 242800., 292775., 295150., 297525., 299900.,
      302675., 305150., 307625., 310100., 312575., 315150., 317725., 320300.,
      245140., 247240., 249340., 251440., 180005., 181610., 183215., 184820.,
      224945., 226730., 228515., 230300., 294900., 297320., 299740., 302160.,
      362075., 365150., 368225., 371300., 371975., 375150., 378325., 381500.,
      381875., 385150., 388425., 391700., 298340., 301000., 303660., 306320.,
      218225., 220250., 222275., 224300., 269885., 272090., 274295., 276500.,
      352580., 355560., 358540., 361520., 431375., 435150., 438925., 442700.,
      441275., 445150., 449025., 452900., 451175., 455150., 459125., 463100.,
      351540., 354760., 357980., 361200., 256445., 258890., 261335., 263780.,
      185164., 187096., 189028., 190960., 239536., 242144., 244752., 247360.,
      290020., 293320., 296620., 299920., 296340., 299720., 303100., 306480.,
      302660., 306120., 309580., 313040., 233072., 235872., 238672., 241472.,
      167884., 170008., 172132., 174256., 112455., 114030., 115605., 117180.,
      143276., 145400., 147524., 149648., 170605., 173290., 175975., 178660.,
      174145., 176890., 179635., 182380., 177685., 180490., 183295., 186100.,
      134204., 136472., 138740., 141008., 94599.,  96318.,  98037.,  99756.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      223475., 225150., 226825., 228500., 233375., 235150., 236925., 238700.,
      243275., 245150., 247025., 248900., 292775., 295150., 297525., 299900.,
      302675., 305150., 307625., 310100., 312575., 315150., 317725., 320300.,
      362075., 365150., 368225., 371300., 371975., 375150., 378325., 381500.,
      381875., 385150., 388425., 391700., 431375., 435150., 438925., 442700.,
      441275., 445150., 449025., 452900., 451175., 455150., 459125., 463100.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      106398., 145960., 187250., 204170., 221090., 178408., 134766., 184328.,
      248160., 312760., 332120., 351480., 280160., 209096., 272290., 362200.,
      451150., 471350., 491550., 388120., 286930., 363850., 479800., 592550.,
      612750., 632950., 496760., 365050., 455410., 597400., 733950., 754150.,
      774350., 605400., 443170., 546970., 715000., 875350., 895550., 915750.,
      714040., 521290., 377000., 488160., 591640., 604600., 617560., 476128.,
      343400., 230598., 294280., 351050., 358370., 365690., 276808., 195606.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {451150., 471350., 491550., 592550.,
                                         612750., 632950., 733950., 754150.,
                                         774350., 875350., 895550., 915750.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      211554.,  212796.,  290168.,  291920.,  372190.,  374500.,  405790.,
      408340.,  439390.,  442180.,  354488.,  356816.,  267714.,  269532.,
      366328.,  368656.,  493088.,  496320.,  621320.,  625520.,  659720.,
      664240.,  698120.,  702960.,  556320.,  560320.,  415096.,  418192.,
      540830.,  544580.,  719240.,  724400.,  895650.,  902300.,  935650.,
      942700.,  975650.,  983100.,  770120.,  776240.,  569150.,  573860.,
      722270.,  727700.,  952200.,  959600.,  1175650., 1185100., 1215650.,
      1225500., 1255650., 1265900., 985160.,  993520.,  723710.,  730100.,
      903710.,  910820.,  1185160., 1194800., 1455650., 1467900., 1495650.,
      1508300., 1535650., 1548700., 1200200., 1210800., 878270.,  886340.,
      1085150., 1093940., 1418120., 1430000., 1735650., 1750700., 1775650.,
      1791100., 1815650., 1831500., 1415240., 1428080., 1032830., 1042580.,
      746296.,  754000.,  965920.,  976320.,  1170120., 1183280., 1195720.,
      1209200., 1221320., 1235120., 941088.,  952256.,  678328.,  686800.,
      454914.,  461196.,  580088.,  588560.,  691390.,  702100.,  705790.,
      716740.,  720190.,  731380.,  544568.,  553616.,  384354.,  391212.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      895650.,  902300.,  935650.,  942700.,  975650.,  983100.,
      1175650., 1185100., 1215650., 1225500., 1255650., 1265900.,
      1455650., 1467900., 1495650., 1508300., 1535650., 1548700.,
      1735650., 1750700., 1775650., 1791100., 1815650., 1831500.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      421866.,  423108.,  424350.,  425592.,  578584.,  580336.,  582088.,
      583840.,  742070.,  744380.,  746690.,  749000.,  809030.,  811580.,
      814130.,  816680.,  875990.,  878780.,  881570.,  884360.,  706648.,
      708976.,  711304.,  713632.,  533610.,  535428.,  537246.,  539064.,
      730328.,  732656.,  734984.,  737312.,  982944.,  986176.,  989408.,
      992640.,  1238440., 1242640., 1246840., 1251040., 1314920., 1319440.,
      1323960., 1328480., 1391400., 1396240., 1401080., 1405920., 1108640.,
      1112640., 1116640., 1120640., 827096.,  830192.,  833288.,  836384.,
      1077910., 1081660., 1085410., 1089160., 1433320., 1438480., 1443640.,
      1448800., 1784650., 1791300., 1797950., 1804600., 1864250., 1871300.,
      1878350., 1885400., 1943850., 1951300., 1958750., 1966200., 1534120.,
      1540240., 1546360., 1552480., 1133590., 1138300., 1143010., 1147720.,
      1439110., 1444540., 1449970., 1455400., 1897000., 1904400., 1911800.,
      1919200., 2341850., 2351300., 2360750., 2370200., 2421450., 2431300.,
      2441150., 2451000., 2501050., 2511300., 2521550., 2531800., 1961960.,
      1970320., 1978680., 1987040., 1441030., 1447420., 1453810., 1460200.,
      1800310., 1807420., 1814530., 1821640., 2360680., 2370320., 2379960.,
      2389600., 2899050., 2911300., 2923550., 2935800., 2978650., 2991300.,
      3003950., 3016600., 3058250., 3071300., 3084350., 3097400., 2389800.,
      2400400., 2411000., 2421600., 1748470., 1756540., 1764610., 1772680.,
      2161510., 2170300., 2179090., 2187880., 2824360., 2836240., 2848120.,
      2860000., 3456250., 3471300., 3486350., 3501400., 3535850., 3551300.,
      3566750., 3582200., 3615450., 3631300., 3647150., 3663000., 2817640.,
      2830480., 2843320., 2856160., 2055910., 2065660., 2075410., 2085160.,
      1484888., 1492592., 1500296., 1508000., 1921440., 1931840., 1942240.,
      1952640., 2327080., 2340240., 2353400., 2366560., 2377960., 2391440.,
      2404920., 2418400., 2428840., 2442640., 2456440., 2470240., 1871008.,
      1882176., 1893344., 1904512., 1348184., 1356656., 1365128., 1373600.,
      903546.,  909828.,  916110.,  922392.,  1151704., 1160176., 1168648.,
      1177120., 1372070., 1382780., 1393490., 1404200., 1400630., 1411580.,
      1422530., 1433480., 1429190., 1440380., 1451570., 1462760., 1080088.,
      1089136., 1098184., 1107232., 761850.,  768708.,  775566.,  782424.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784650., 1791300., 1797950., 1804600., 1864250., 1871300., 1878350.,
      1885400., 1943850., 1951300., 1958750., 1966200., 2341850., 2351300.,
      2360750., 2370200., 2421450., 2431300., 2441150., 2451000., 2501050.,
      2511300., 2521550., 2531800., 2899050., 2911300., 2923550., 2935800.,
      2978650., 2991300., 3003950., 3016600., 3058250., 3071300., 3084350.,
      3097400., 3456250., 3471300., 3486350., 3501400., 3535850., 3551300.,
      3566750., 3582200., 3615450., 3631300., 3647150., 3663000.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1956.,  2666.,  3400.,  3670.,  3940.,  4210.,  3380.,  2541.,
      3380.,  4532.,  5690.,  6000.,  6310.,  6620.,  5260.,  3914.,
      4990.,  6620.,  8225.,  8550.,  8875.,  9200.,  7250.,  5350.,
      6670.,  8780.,  10825., 11150., 11475., 11800., 9250.,  6790.,
      8350.,  10940., 13425., 13750., 14075., 14400., 11250., 8230.,
      10030., 13100., 16025., 16350., 16675., 17000., 13250., 9670.,
      6956.,  9004.,  10910., 11120., 11330., 11540., 8900.,  6422.,
      4296.,  5486.,  6550.,  6670.,  6790.,  6910.,  5240.,  3711.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8225.,  8550.,  8875.,  9200.,  10825., 11150., 11475., 11800.,
      13425., 13750., 14075., 14400., 16025., 16350., 16675., 17000.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3822.,  3912.,  5206.,  5332.,  6635.,  6800.,  7160.,  7340.,  7685.,
      7880.,  8210.,  8420.,  6586.,  6760.,  4947.,  5082.,  6592.,  6760.,
      8832.,  9064.,  11080., 11380., 11680., 12000., 12280., 12620., 12880.,
      13240., 10224., 10520., 7600.,  7828.,  9710.,  9980.,  12870., 13240.,
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400., 14050.,
      14500., 10355., 10700., 12950., 13340., 17030., 17560., 20975., 21650.,
      21600., 22300., 22225., 22950., 22850., 23600., 17890., 18500., 13115.,
      13580., 16190., 16700., 21190., 21880., 25975., 26850., 26600., 27500.,
      27225., 28150., 27850., 28800., 21730., 22500., 15875., 16460., 19430.,
      20060., 25350., 26200., 30975., 32050., 31600., 32700., 32225., 33350.,
      32850., 34000., 25570., 26500., 18635., 19340., 13360., 13912., 17264.,
      18008., 20880., 21820., 21280., 22240., 21680., 22660., 22080., 23080.,
      16992., 17800., 12232., 12844., 8142.,  8592.,  10366., 10972., 12335.,
      13100., 12560., 13340., 12785., 13580., 13010., 13820., 9826.,  10480.,
      6927.,  7422.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400.,
      20975., 21650., 21600., 22300., 22225., 22950., 22850., 23600.,
      25975., 26850., 26600., 27500., 27225., 28150., 27850., 28800.,
      30975., 32050., 31600., 32700., 32225., 33350., 32850., 34000.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7554.,  7644.,  7734.,  7824.,  10286., 10412., 10538., 10664., 13105.,
      13270., 13435., 13600., 14140., 14320., 14500., 14680., 15175., 15370.,
      15565., 15760., 16210., 16420., 16630., 16840., 12998., 13172., 13346.,
      13520., 9759.,  9894.,  10029., 10164., 13016., 13184., 13352., 13520.,
      17432., 17664., 17896., 18128., 21860., 22160., 22460., 22760., 23040.,
      23360., 23680., 24000., 24220., 24560., 24900., 25240., 25400., 25760.,
      26120., 26480., 20152., 20448., 20744., 21040., 14972., 15200., 15428.,
      15656., 19150., 19420., 19690., 19960., 25370., 25740., 26110., 26480.,
      31475., 31950., 32425., 32900., 32700., 33200., 33700., 34200., 33925.,
      34450., 34975., 35500., 35150., 35700., 36250., 36800., 27650., 28100.,
      28550., 29000., 20365., 20710., 21055., 21400., 25510., 25900., 26290.,
      26680., 33530., 34060., 34590., 35120., 41275., 41950., 42625., 43300.,
      42500., 43200., 43900., 44600., 43725., 44450., 45175., 45900., 44950.,
      45700., 46450., 47200., 35170., 35780., 36390., 37000., 25765., 26230.,
      26695., 27160., 31870., 32380., 32890., 33400., 41690., 42380., 43070.,
      43760., 51075., 51950., 52825., 53700., 52300., 53200., 54100., 55000.,
      53525., 54450., 55375., 56300., 54750., 55700., 56650., 57600., 42690.,
      43460., 44230., 45000., 31165., 31750., 32335., 32920., 38230., 38860.,
      39490., 40120., 49850., 50700., 51550., 52400., 60875., 61950., 63025.,
      64100., 62100., 63200., 64300., 65400., 63325., 64450., 65575., 66700.,
      64550., 65700., 66850., 68000., 50210., 51140., 52070., 53000., 36565.,
      37270., 37975., 38680., 26168., 26720., 27272., 27824., 33784., 34528.,
      35272., 36016., 40820., 41760., 42700., 43640., 41600., 42560., 43520.,
      44480., 42380., 43360., 44340., 45320., 43160., 44160., 45160., 46160.,
      33176., 33984., 34792., 35600., 23852., 24464., 25076., 25688., 15834.,
      16284., 16734., 17184., 20126., 20732., 21338., 21944., 23905., 24670.,
      25435., 26200., 24340., 25120., 25900., 26680., 24775., 25570., 26365.,
      27160., 25210., 26020., 26830., 27640., 18998., 19652., 20306., 20960.,
      13359., 13854., 14349., 14844.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475., 31950., 32425., 32900., 32700., 33200., 33700., 34200.,
      33925., 34450., 34975., 35500., 35150., 35700., 36250., 36800.,
      41275., 41950., 42625., 43300., 42500., 43200., 43900., 44600.,
      43725., 44450., 45175., 45900., 44950., 45700., 46450., 47200.,
      51075., 51950., 52825., 53700., 52300., 53200., 54100., 55000.,
      53525., 54450., 55375., 56300., 54750., 55700., 56650., 57600.,
      60875., 61950., 63025., 64100., 62100., 63200., 64300., 65400.,
      63325., 64450., 65575., 66700., 64550., 65700., 66850., 68000.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15135., 20644.,  26345.,  28475.,  30605.,  32735.,  26284.,  19761.,
      26320., 35296.,  44320.,  46760.,  49200.,  51640.,  41024.,  30520.,
      38975., 51700.,  64225.,  66775.,  69325.,  71875.,  56620.,  41765.,
      52175., 68660.,  84625.,  87175.,  89725.,  92275.,  72300.,  53045.,
      65375., 85620.,  105025., 107575., 110125., 112675., 87980.,  64325.,
      78575., 102580., 125425., 127975., 130525., 133075., 103660., 75605.,
      54280., 70208.,  85000.,  86640.,  88280.,  89920.,  69280.,  49936.,
      33315., 42484.,  50645.,  51575.,  52505.,  53435.,  40444.,  28581.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      64225.,  66775.,  69325.,  71875.,  84625.,  87175.,  89725.,  92275.,
      105025., 107575., 110125., 112675., 125425., 127975., 130525., 133075.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29919.,  30270.,  40796.,  41288.,  52045.,  52690.,  56245.,  56950.,
      60445.,  61210.,  64645.,  65470.,  51884.,  52568.,  38991.,  39522.,
      51980.,  52640.,  69680.,  70592.,  87460.,  88640.,  92260.,  93520.,
      97060.,  98400.,  101860., 103280., 80880.,  82048.,  60140.,  61040.,
      76885.,  77950.,  101940., 103400., 126575., 128450., 131575., 133550.,
      136575., 138650., 141575., 143750., 111460., 113240., 82165.,  83530.,
      102805., 104350., 135220., 137320., 166575., 169250., 171575., 174350.,
      176575., 179450., 181575., 184550., 142180., 144600., 104245., 106090.,
      128725., 130750., 168500., 171240., 206575., 210050., 211575., 215150.,
      216575., 220250., 221575., 225350., 172900., 175960., 126325., 128650.,
      154645., 157150., 201780., 205160., 246575., 250850., 251575., 255950.,
      256575., 261050., 261575., 266150., 203620., 207320., 148405., 151210.,
      106364., 108560., 137456., 140416., 166260., 170000., 169460., 173280.,
      172660., 176560., 175860., 179840., 135344., 138560., 97436.,  99872.,
      64839.,  66630.,  82556.,  84968.,  98245.,  101290., 100045., 103150.,
      101845., 105010., 103645., 106870., 78284.,  80888.,  55191.,  57162.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      126575., 128450., 131575., 133550., 136575., 138650., 141575., 143750.,
      166575., 169250., 171575., 174350., 176575., 179450., 181575., 184550.,
      206575., 210050., 211575., 215150., 216575., 220250., 221575., 225350.,
      246575., 250850., 251575., 255950., 256575., 261050., 261575., 266150.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      59487.,  59838.,  60189.,  60540.,  81100.,  81592.,  82084.,  82576.,
      103445., 104090., 104735., 105380., 111785., 112490., 113195., 113900.,
      120125., 120890., 121655., 122420., 128465., 129290., 130115., 130940.,
      103084., 103768., 104452., 105136., 77451.,  77982.,  78513.,  79044.,
      103300., 103960., 104620., 105280., 138448., 139360., 140272., 141184.,
      173740., 174920., 176100., 177280., 183260., 184520., 185780., 187040.,
      192780., 194120., 195460., 196800., 202300., 203720., 205140., 206560.,
      160592., 161760., 162928., 164096., 119380., 120280., 121180., 122080.,
      152705., 153770., 154835., 155900., 202420., 203880., 205340., 206800.,
      251275., 253150., 255025., 256900., 261175., 263150., 265125., 267100.,
      271075., 273150., 275225., 277300., 280975., 283150., 285325., 287500.,
      221140., 222920., 224700., 226480., 162965., 164330., 165695., 167060.,
      204065., 205610., 207155., 208700., 268340., 270440., 272540., 274640.,
      330475., 333150., 335825., 338500., 340375., 343150., 345925., 348700.,
      350275., 353150., 356025., 358900., 360175., 363150., 366125., 369100.,
      281940., 284360., 286780., 289200., 206645., 208490., 210335., 212180.,
      255425., 257450., 259475., 261500., 334260., 337000., 339740., 342480.,
      409675., 413150., 416625., 420100., 419575., 423150., 426725., 430300.,
      429475., 433150., 436825., 440500., 439375., 443150., 446925., 450700.,
      342740., 345800., 348860., 351920., 250325., 252650., 254975., 257300.,
      306785., 309290., 311795., 314300., 400180., 403560., 406940., 410320.,
      488875., 493150., 497425., 501700., 498775., 503150., 507525., 511900.,
      508675., 513150., 517625., 522100., 518575., 523150., 527725., 532300.,
      403540., 407240., 410940., 414640., 294005., 296810., 299615., 302420.,
      210532., 212728., 214924., 217120., 271952., 274912., 277872., 280832.,
      328780., 332520., 336260., 340000., 335100., 338920., 342740., 346560.,
      341420., 345320., 349220., 353120., 347740., 351720., 355700., 359680.,
      267472., 270688., 273904., 277120., 192436., 194872., 197308., 199744.,
      127887., 129678., 131469., 133260., 162700., 165112., 167524., 169936.,
      193445., 196490., 199535., 202580., 196985., 200090., 203195., 206300.,
      200525., 203690., 206855., 210020., 204065., 207290., 210515., 213740.,
      153964., 156568., 159172., 161776., 108411., 110382., 112353., 114324.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      251275., 253150., 255025., 256900., 261175., 263150., 265125., 267100.,
      271075., 273150., 275225., 277300., 280975., 283150., 285325., 287500.,
      330475., 333150., 335825., 338500., 340375., 343150., 345925., 348700.,
      350275., 353150., 356025., 358900., 360175., 363150., 366125., 369100.,
      409675., 413150., 416625., 420100., 419575., 423150., 426725., 430300.,
      429475., 433150., 436825., 440500., 439375., 443150., 446925., 450700.,
      488875., 493150., 497425., 501700., 498775., 503150., 507525., 511900.,
      508675., 513150., 517625., 522100., 518575., 523150., 527725., 532300.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      119046., 162440.,  207370.,  224290.,  241210., 258130., 207272.,
      155838., 207704.,  278560.,  349800.,  369160., 388520., 407880.,
      324000., 241016.,  308050.,  408600.,  507550., 527750., 547950.,
      568150., 447480.,  330010.,  412690.,  543000., 669150., 689350.,
      709550., 729750.,  571640.,  419290.,  517330., 677400., 830750.,
      850950., 871150.,  891350.,  695800.,  508570., 621970., 811800.,
      992350., 1012550., 1032750., 1052950., 819960., 597850., 428792.,
      554400., 670920.,  683880.,  696840.,  709800., 546592., 393752.,
      262326., 334280.,  398170.,  405490.,  412810., 420130., 317672.,
      224238.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {507550., 527750.,  547950.,  568150.,
                                         669150., 689350.,  709550.,  729750.,
                                         830750., 850950.,  871150.,  891350.,
                                         992350., 1012550., 1032750., 1052950.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      236706.,  238092.,  322936.,  324880.,  412190.,  414740.,  445790.,
      448580.,  479390.,  482420.,  512990.,  516260.,  411832.,  414544.,
      309570.,  311676.,  412792.,  415408.,  553504.,  557120.,  694920.,
      699600.,  733320.,  738320.,  771720.,  777040.,  810120.,  815760.,
      643360.,  648000.,  478456.,  482032.,  611870.,  616100.,  811400.,
      817200.,  1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 887880.,  894960.,  654590.,  660020.,  819230.,
      825380.,  1077640., 1086000., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500., 1133640., 1143280., 831230.,
      838580.,  1026590., 1034660., 1343880., 1354800., 1647650., 1661500.,
      1687650., 1701900., 1727650., 1742300., 1767650., 1782700., 1379400.,
      1391600., 1007870., 1017140., 1233950., 1243940., 1610120., 1623600.,
      1967650., 1984700., 2007650., 2025100., 2047650., 2065500., 2087650.,
      2105900., 1625160., 1639920., 1184510., 1195700., 848824.,  857584.,
      1096992., 1108800., 1326920., 1341840., 1352520., 1367760., 1378120.,
      1393680., 1403720., 1419600., 1080352., 1093184., 777784.,  787504.,
      517506.,  524652.,  658936.,  668560.,  784190.,  796340.,  798590.,
      810980.,  812990.,  825620.,  827390.,  840260.,  624952.,  635344.,
      440610.,  448476.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1007650., 1015100., 1047650., 1055500., 1087650., 1095900., 1127650.,
      1136300., 1327650., 1338300., 1367650., 1378700., 1407650., 1419100.,
      1447650., 1459500., 1647650., 1661500., 1687650., 1701900., 1727650.,
      1742300., 1767650., 1782700., 1967650., 1984700., 2007650., 2025100.,
      2047650., 2065500., 2087650., 2105900.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      472026.,  473412.,  474798.,  476184.,  643928.,  645872.,  647816.,
      649760.,  821830.,  824380.,  826930.,  829480.,  888790.,  891580.,
      894370.,  897160.,  955750.,  958780.,  961810.,  964840.,  1022710.,
      1025980., 1029250., 1032520., 820952.,  823664.,  826376.,  829088.,
      617034.,  619140.,  621246.,  623352.,  822968.,  825584.,  828200.,
      830816.,  1103392., 1107008., 1110624., 1114240., 1385160., 1389840.,
      1394520., 1399200., 1461640., 1466640., 1471640., 1476640., 1538120.,
      1543440., 1548760., 1554080., 1614600., 1620240., 1625880., 1631520.,
      1282080., 1286720., 1291360., 1296000., 953336.,  956912.,  960488.,
      964064.,  1219510., 1223740., 1227970., 1232200., 1617000., 1622800.,
      1628600., 1634400., 2007850., 2015300., 2022750., 2030200., 2087450.,
      2095300., 2103150., 2111000., 2167050., 2175300., 2183550., 2191800.,
      2246650., 2255300., 2263950., 2272600., 1768680., 1775760., 1782840.,
      1789920., 1303750., 1309180., 1314610., 1320040., 1632310., 1638460.,
      1644610., 1650760., 2146920., 2155280., 2163640., 2172000., 2644650.,
      2655300., 2665950., 2676600., 2724250., 2735300., 2746350., 2757400.,
      2803850., 2815300., 2826750., 2838200., 2883450., 2895300., 2907150.,
      2919000., 2257640., 2267280., 2276920., 2286560., 1655110., 1662460.,
      1669810., 1677160., 2045110., 2053180., 2061250., 2069320., 2676840.,
      2687760., 2698680., 2709600., 3281450., 3295300., 3309150., 3323000.,
      3361050., 3375300., 3389550., 3403800., 3440650., 3455300., 3469950.,
      3484600., 3520250., 3535300., 3550350., 3565400., 2746600., 2758800.,
      2771000., 2783200., 2006470., 2015740., 2025010., 2034280., 2457910.,
      2467900., 2477890., 2487880., 3206760., 3220240., 3233720., 3247200.,
      3918250., 3935300., 3952350., 3969400., 3997850., 4015300., 4032750.,
      4050200., 4077450., 4095300., 4113150., 4131000., 4157050., 4175300.,
      4193550., 4211800., 3235560., 3250320., 3265080., 3279840., 2357830.,
      2369020., 2380210., 2391400., 1688888., 1697648., 1706408., 1715168.,
      2182176., 2193984., 2205792., 2217600., 2638920., 2653840., 2668760.,
      2683680., 2689800., 2705040., 2720280., 2735520., 2740680., 2756240.,
      2771800., 2787360., 2791560., 2807440., 2823320., 2839200., 2147872.,
      2160704., 2173536., 2186368., 1545848., 1555568., 1565288., 1575008.,
      1027866., 1035012., 1042158., 1049304., 1308248., 1317872., 1327496.,
      1337120., 1556230., 1568380., 1580530., 1592680., 1584790., 1597180.,
      1609570., 1621960., 1613350., 1625980., 1638610., 1651240., 1641910.,
      1654780., 1667650., 1680520., 1239512., 1249904., 1260296., 1270688.,
      873354.,  881220.,  889086.,  896952.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2007850., 2015300., 2022750., 2030200., 2087450., 2095300., 2103150.,
      2111000., 2167050., 2175300., 2183550., 2191800., 2246650., 2255300.,
      2263950., 2272600., 2644650., 2655300., 2665950., 2676600., 2724250.,
      2735300., 2746350., 2757400., 2803850., 2815300., 2826750., 2838200.,
      2883450., 2895300., 2907150., 2919000., 3281450., 3295300., 3309150.,
      3323000., 3361050., 3375300., 3389550., 3403800., 3440650., 3455300.,
      3469950., 3484600., 3520250., 3535300., 3550350., 3565400., 3918250.,
      3935300., 3952350., 3969400., 3997850., 4015300., 4032750., 4050200.,
      4077450., 4095300., 4113150., 4131000., 4157050., 4175300., 4193550.,
      4211800.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1554.,  2142.,  2760.,  3030.,  2460.,  1869.,  2636.,  3564.,  4510.,
      4820.,  3860.,  2894.,  3850.,  5140.,  6425.,  6750.,  5350.,  3970.,
      5110.,  6760.,  8375.,  8700.,  6850.,  5050.,  3632.,  4756.,  5830.,
      6040.,  4700.,  3422.,  2292.,  2958.,  3570.,  3690.,  2820.,  2013.,
      7710.,  10134., 12480., 12750., 10020., 7377.,  9764.,  12780., 15670.,
      15980., 12500., 9158.,  11410., 14860., 18125., 18450., 14350., 10450.,
      12670., 16480., 20075., 20400., 15850., 11530., 8600.,  11092., 13390.,
      13600., 10460., 7526.,  5208.,  6630.,  7890.,  8010.,  6060.,  4281.,
      13866., 18126., 22200., 22470., 17580., 12885., 16892., 21996., 26830.,
      27140., 21140., 15422., 18970., 24580., 29825., 30150., 23350., 16930.,
      20230., 26200., 31775., 32100., 24850., 18010., 13568., 17428., 20950.,
      21160., 16220., 11630., 8124.,  10302., 12210., 12330., 9300.,  6549.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {6425.,  6750.,  8375.,  8700.,
                                         18125., 18450., 20075., 20400.,
                                         29825., 30150., 31775., 32100.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3036.,  3108.,  4182.,  4284.,  5385.,  5520.,  5910.,  6060.,  4794.,
      4920.,  3639.,  3738.,  5140.,  5272.,  6944.,  7128.,  8780.,  9020.,
      9380.,  9640.,  7504.,  7720.,  5620.,  5788.,  7490.,  7700.,  9990.,
      10280., 12475., 12850., 13100., 13500., 10370., 10700., 7685.,  7940.,
      9920.,  10220., 13110., 13520., 16225., 16750., 16850., 17400., 13250.,
      13700., 9755.,  10100., 6988.,  7264.,  9136.,  9512.,  11180., 11660.,
      11580., 12080., 8992.,  9400.,  6532.,  6844.,  4350.,  4584.,  5598.,
      5916.,  6735.,  7140.,  6960.,  7380.,  5298.,  5640.,  3765.,  4026.,
      15024., 15420., 19734., 20268., 24285., 24960., 24810., 25500., 19482.,
      20040., 14331., 14754., 18964., 19528., 24800., 25560., 30380., 31340.,
      30980., 31960., 24208., 25000., 17716., 18316., 22070., 22820., 28710.,
      29720., 34975., 36250., 35600., 36900., 27650., 28700., 20105., 20900.,
      24500., 25340., 31830., 32960., 38725., 40150., 39350., 40800., 30530.,
      31700., 22175., 23060., 16492., 17200., 21232., 22184., 25580., 26780.,
      25980., 27200., 19936., 20920., 14308., 15052., 9858.,  10416., 12510.,
      13260., 14835., 15780., 15060., 16020., 11346., 12120., 7977.,  8562.,
      27012., 27732., 35286., 36252., 43185., 44400., 43710., 44940., 34170.,
      35160., 25023., 25770., 32788., 33784., 42656., 43992., 51980., 53660.,
      52580., 54280., 40912., 42280., 29812., 30844., 36650., 37940., 47430.,
      49160., 57475., 59650., 58100., 60300., 44930., 46700., 32525., 33860.,
      39080., 40460., 50550., 52400., 61225., 63550., 61850., 64200., 47810.,
      49700., 34595., 36020., 25996., 27136., 33328., 34856., 39980., 41900.,
      40380., 42320., 30880., 32440., 22084., 23260., 15366., 16248., 19422.,
      20604., 22935., 24420., 23160., 24660., 17394., 18600., 12189., 13098.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12475., 12850., 13100., 13500., 16225., 16750., 16850., 17400.,
      34975., 36250., 35600., 36900., 38725., 40150., 39350., 40800.,
      57475., 59650., 58100., 60300., 61225., 63550., 61850., 64200.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6000.,   6072.,   6144.,   6216.,   8262.,   8364.,   8466.,   8568.,
      10635.,  10770.,  10905.,  11040.,  11670.,  11820.,  11970.,  12120.,
      9462.,   9588.,   9714.,   9840.,   7179.,   7278.,   7377.,   7476.,
      10148.,  10280.,  10412.,  10544.,  13704.,  13888.,  14072.,  14256.,
      17320.,  17560.,  17800.,  18040.,  18500.,  18760.,  19020.,  19280.,
      14792.,  15008.,  15224.,  15440.,  11072.,  11240.,  11408.,  11576.,
      14770.,  14980.,  15190.,  15400.,  19690.,  19980.,  20270.,  20560.,
      24575.,  24950.,  25325.,  25700.,  25800.,  26200.,  26600.,  27000.,
      20410.,  20740.,  21070.,  21400.,  15115.,  15370.,  15625.,  15880.,
      19540.,  19840.,  20140.,  20440.,  25810.,  26220.,  26630.,  27040.,
      31925.,  32450.,  32975.,  33500.,  33150.,  33700.,  34250.,  34800.,
      26050.,  26500.,  26950.,  27400.,  19165.,  19510.,  19855.,  20200.,
      13700.,  13976.,  14252.,  14528.,  17896.,  18272.,  18648.,  19024.,
      21880.,  22360.,  22840.,  23320.,  22660.,  23160.,  23660.,  24160.,
      17576.,  17984.,  18392.,  18800.,  12752.,  13064.,  13376.,  13688.,
      8466.,   8700.,   8934.,   9168.,   10878.,  11196.,  11514.,  11832.,
      13065.,  13470.,  13875.,  14280.,  13500.,  13920.,  14340.,  14760.,
      10254.,  10596.,  10938.,  11280.,  7269.,   7530.,   7791.,   8052.,
      29652.,  30048.,  30444.,  30840.,  38934.,  39468.,  40002.,  40536.,
      47895.,  48570.,  49245.,  49920.,  48930.,  49620.,  50310.,  51000.,
      38406.,  38964.,  39522.,  40080.,  28239.,  28662.,  29085.,  29508.,
      37364.,  37928.,  38492.,  39056.,  48840.,  49600.,  50360.,  51120.,
      59800.,  60760.,  61720.,  62680.,  60980.,  61960.,  62940.,  63920.,
      47624.,  48416.,  49208.,  50000.,  34832.,  35432.,  36032.,  36632.,
      43390.,  44140.,  44890.,  45640.,  56410.,  57420.,  58430.,  59440.,
      68675.,  69950.,  71225.,  72500.,  69900.,  71200.,  72500.,  73800.,
      54250.,  55300.,  56350.,  57400.,  39415.,  40210.,  41005.,  41800.,
      48160.,  49000.,  49840.,  50680.,  62530.,  63660.,  64790.,  65920.,
      76025.,  77450.,  78875.,  80300.,  77250.,  78700.,  80150.,  81600.,
      59890.,  61060.,  62230.,  63400.,  43465.,  44350.,  45235.,  46120.,
      32276.,  32984.,  33692.,  34400.,  41512.,  42464.,  43416.,  44368.,
      49960.,  51160.,  52360.,  53560.,  50740.,  51960.,  53180.,  54400.,
      38888.,  39872.,  40856.,  41840.,  27872.,  28616.,  29360.,  30104.,
      19158.,  19716.,  20274.,  20832.,  24270.,  25020.,  25770.,  26520.,
      28725.,  29670.,  30615.,  31560.,  29160.,  30120.,  31080.,  32040.,
      21918.,  22692.,  23466.,  24240.,  15369.,  15954.,  16539.,  17124.,
      53304.,  54024.,  54744.,  55464.,  69606.,  70572.,  71538.,  72504.,
      85155.,  86370.,  87585.,  88800.,  86190.,  87420.,  88650.,  89880.,
      67350.,  68340.,  69330.,  70320.,  49299.,  50046.,  50793.,  51540.,
      64580.,  65576.,  66572.,  67568.,  83976.,  85312.,  86648.,  87984.,
      102280., 103960., 105640., 107320., 103460., 105160., 106860., 108560.,
      80456.,  81824.,  83192.,  84560.,  58592.,  59624.,  60656.,  61688.,
      72010.,  73300.,  74590.,  75880.,  93130.,  94860.,  96590.,  98320.,
      112775., 114950., 117125., 119300., 114000., 116200., 118400., 120600.,
      88090.,  89860.,  91630.,  93400.,  63715.,  65050.,  66385.,  67720.,
      76780.,  78160.,  79540.,  80920.,  99250.,  101100., 102950., 104800.,
      120125., 122450., 124775., 127100., 121350., 123700., 126050., 128400.,
      93730.,  95620.,  97510.,  99400.,  67765.,  69190.,  70615.,  72040.,
      50852.,  51992.,  53132.,  54272.,  65128.,  66656.,  68184.,  69712.,
      78040.,  79960.,  81880.,  83800.,  78820.,  80760.,  82700.,  84640.,
      60200.,  61760.,  63320.,  64880.,  42992.,  44168.,  45344.,  46520.,
      29850.,  30732.,  31614.,  32496.,  37662.,  38844.,  40026.,  41208.,
      44385.,  45870.,  47355.,  48840.,  44820.,  46320.,  47820.,  49320.,
      33582.,  34788.,  35994.,  37200.,  23469.,  24378.,  25287.,  26196.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24575.,  24950.,  25325.,  25700.,  25800.,  26200.,  26600.,  27000.,
      31925.,  32450.,  32975.,  33500.,  33150.,  33700.,  34250.,  34800.,
      68675.,  69950.,  71225.,  72500.,  69900.,  71200.,  72500.,  73800.,
      76025.,  77450.,  78875.,  80300.,  77250.,  78700.,  80150.,  81600.,
      112775., 114950., 117125., 119300., 114000., 116200., 118400., 120600.,
      120125., 122450., 124775., 127100., 121350., 123700., 126050., 128400.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11955.,  16500.,  21285.,  23415.,  19020.,  14457.,  20440.,  27648.,
      35000.,  37440.,  29984.,  22480.,  29975.,  40020.,  50025.,  52575.,
      41660.,  30905.,  39875.,  52740.,  65325.,  67875.,  53420.,  39365.,
      28240.,  36960.,  45280.,  46920.,  36480.,  26536.,  17715.,  22836.,
      27525.,  28455.,  21708.,  15465.,  60555.,  79572.,  97965.,  100095.,
      78636.,  57873.,  76600.,  100224., 122840., 125280., 97952.,  71728.,
      89375.,  116340., 141825., 144375., 112220., 81665.,  99275.,  129060.,
      157125., 159675., 123980., 90125.,  67120.,  86496.,  104320., 105960.,
      81408.,  58504.,  40395.,  51348.,  61005.,  61935.,  46764.,  32961.,
      109155., 142644., 174645., 176775., 138252., 101289., 132760., 172800.,
      210680., 213120., 165920., 120976., 148775., 192660., 233625., 236175.,
      182780., 132425., 158675., 205380., 248925., 251475., 194540., 140885.,
      106000., 136032., 163360., 165000., 126336., 90472.,  63075.,  79860.,
      94485.,  95415.,  71820.,  50457.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {50025.,  52575.,  65325.,  67875.,
                                         141825., 144375., 157125., 159675.,
                                         233625., 236175., 248925., 251475.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23631.,  23910.,  32604.,  33000.,  42045.,  42570.,  46245.,  46830.,
      37548.,  38040.,  28527.,  28914.,  40364.,  40880.,  54576.,  55296.,
      69060.,  70000.,  73860.,  74880.,  59120.,  59968.,  44300.,  44960.,
      59125.,  59950.,  78900.,  80040.,  98575.,  100050., 103575., 105150.,
      82020.,  83320.,  60805.,  61810.,  78565.,  79750.,  103860., 105480.,
      128575., 130650., 133575., 135750., 105060., 106840., 77365.,  78730.,
      55388.,  56480.,  72432.,  73920.,  88660.,  90560.,  91860.,  93840.,
      71344.,  72960.,  51836.,  53072.,  34503.,  35430.,  44412.,  45672.,
      53445.,  55050.,  55245.,  56910.,  42060.,  43416.,  29895.,  30930.,
      119535., 121110., 157020., 159144., 193245., 195930., 197445., 200190.,
      155052., 157272., 114063., 115746., 150956., 153200., 197424., 200448.,
      241860., 245680., 246660., 250560., 192752., 195904., 141068., 143456.,
      175765., 178750., 228660., 232680., 278575., 283650., 283575., 288750.,
      220260., 224440., 160165., 163330., 195205., 198550., 253620., 258120.,
      308575., 314250., 313575., 319350., 243300., 247960., 176725., 180250.,
      131420., 134240., 169200., 172992., 203860., 208640., 207060., 211920.,
      158896., 162816., 114044., 117008., 78567.,  80790.,  99708.,  102696.,
      118245., 122010., 120045., 123870., 90444.,  93528.,  63591.,  65922.,
      215439., 218310., 281436., 285288., 344445., 349290., 348645., 353550.,
      272556., 276504., 199599., 202578., 261548., 265520., 340272., 345600.,
      414660., 421360., 419460., 426240., 326384., 331840., 237836., 241952.,
      292405., 297550., 378420., 385320., 458575., 467250., 463575., 472350.,
      358500., 365560., 259525., 264850., 311845., 317350., 403380., 410760.,
      488575., 497850., 493575., 502950., 381540., 389080., 276085., 281770.,
      207452., 212000., 265968., 272064., 319060., 326720., 322260., 330000.,
      246448., 252672., 176252., 180944., 122631., 126150., 155004., 159720.,
      183045., 188970., 184845., 190830., 138828., 143640., 97287.,  100914.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      98575.,  100050., 103575., 105150., 128575., 130650., 133575., 135750.,
      278575., 283650., 283575., 288750., 308575., 314250., 313575., 319350.,
      458575., 467250., 463575., 472350., 488575., 497850., 493575., 502950.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46983.,  47262.,  47541.,  47820.,  64812.,  65208.,  65604.,  66000.,
      83565.,  84090.,  84615.,  85140.,  91905.,  92490.,  93075.,  93660.,
      74604.,  75096.,  75588.,  76080.,  56667.,  57054.,  57441.,  57828.,
      80212.,  80728.,  81244.,  81760.,  108432., 109152., 109872., 110592.,
      137180., 138120., 139060., 140000., 146700., 147720., 148740., 149760.,
      117392., 118240., 119088., 119936., 87940.,  88600.,  89260.,  89920.,
      117425., 118250., 119075., 119900., 156660., 157800., 158940., 160080.,
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      162740., 164040., 165340., 166640., 120605., 121610., 122615., 123620.,
      155945., 157130., 158315., 159500., 206100., 207720., 209340., 210960.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.,
      208340., 210120., 211900., 213680., 153365., 154730., 156095., 157460.,
      109684., 110776., 111868., 112960., 143376., 144864., 146352., 147840.,
      175420., 177320., 179220., 181120., 181740., 183720., 185700., 187680.,
      141072., 142688., 144304., 145920., 102436., 103672., 104908., 106144.,
      68079.,  69006.,  69933.,  70860.,  87564.,  88824.,  90084.,  91344.,
      105285., 106890., 108495., 110100., 108825., 110490., 112155., 113820.,
      82764.,  84120.,  85476.,  86832.,  58755.,  59790.,  60825.,  61860.,
      237495., 239070., 240645., 242220., 311916., 314040., 316164., 318288.,
      383805., 386490., 389175., 391860., 392145., 394890., 397635., 400380.,
      307884., 310104., 312324., 314544., 226443., 228126., 229809., 231492.,
      299668., 301912., 304156., 306400., 391824., 394848., 397872., 400896.,
      479900., 483720., 487540., 491360., 489420., 493320., 497220., 501120.,
      382352., 385504., 388656., 391808., 279748., 282136., 284524., 286912.,
      348545., 351530., 354515., 357500., 453300., 457320., 461340., 465360.,
      552075., 557150., 562225., 567300., 561975., 567150., 572325., 577500.,
      436340., 440520., 444700., 448880., 317165., 320330., 323495., 326660.,
      387065., 390410., 393755., 397100., 502740., 507240., 511740., 516240.,
      611475., 617150., 622825., 628500., 621375., 627150., 632925., 638700.,
      481940., 486600., 491260., 495920., 349925., 353450., 356975., 360500.,
      260020., 262840., 265660., 268480., 334608., 338400., 342192., 345984.,
      402940., 407720., 412500., 417280., 409260., 414120., 418980., 423840.,
      313872., 317792., 321712., 325632., 225124., 228088., 231052., 234016.,
      154911., 157134., 159357., 161580., 196428., 199416., 202404., 205392.,
      232725., 236490., 240255., 244020., 236265., 240090., 243915., 247740.,
      177804., 180888., 183972., 187056., 124851., 127182., 129513., 131844.,
      428007., 430878., 433749., 436620., 559020., 562872., 566724., 570576.,
      684045., 688890., 693735., 698580., 692385., 697290., 702195., 707100.,
      541164., 545112., 549060., 553008., 396219., 399198., 402177., 405156.,
      519124., 523096., 527068., 531040., 675216., 680544., 685872., 691200.,
      822620., 829320., 836020., 842720., 832140., 838920., 845700., 852480.,
      647312., 652768., 658224., 663680., 471556., 475672., 479788., 483904.,
      579665., 584810., 589955., 595100., 749940., 756840., 763740., 770640.,
      908475., 917150., 925825., 934500., 918375., 927150., 935925., 944700.,
      709940., 717000., 724060., 731120., 513725., 519050., 524375., 529700.,
      618185., 623690., 629195., 634700., 799380., 806760., 814140., 821520.,
      967875., 977150., 986425., 995700., 977775., 987150., 996525., 1005900.,
      755540., 763080., 770620., 778160., 546485., 552170., 557855., 563540.,
      410356., 414904., 419452., 424000., 525840., 531936., 538032., 544128.,
      630460., 638120., 645780., 653440., 636780., 644520., 652260., 660000.,
      486672., 492896., 499120., 505344., 347812., 352504., 357196., 361888.,
      241743., 245262., 248781., 252300., 305292., 310008., 314724., 319440.,
      360165., 366090., 372015., 377940., 363705., 369690., 375675., 381660.,
      272844., 277656., 282468., 287280., 190947., 194574., 198201., 201828.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      195675., 197150., 198625., 200100., 205575., 207150., 208725., 210300.,
      255075., 257150., 259225., 261300., 264975., 267150., 269325., 271500.,
      552075., 557150., 562225., 567300., 561975., 567150., 572325., 577500.,
      611475., 617150., 622825., 628500., 621375., 627150., 632925., 638700.,
      908475., 917150., 925825., 934500., 918375., 927150., 935925., 944700.,
      967875., 977150., 986425., 995700., 977775., 987150., 996525., 1005900.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      93750.,   129480.,  167130.,  184050.,  149544.,  113694.,  160952.,
      217760.,  275720.,  295080.,  236320.,  177176.,  236530.,  315800.,
      394750.,  414950.,  328760.,  243850.,  315010.,  416600.,  515950.,
      536150.,  421880.,  310810.,  222680.,  291360.,  356840.,  369800.,
      287392.,  208952.,  139254.,  179400.,  216090.,  223410.,  170280.,
      121182.,  479958.,  630600.,  776250.,  793170.,  623016.,  458430.,
      606776.,  793760.,  972680.,  992040.,  775456.,  567704.,  707410.,
      920600.,  1121950., 1142150., 887480.,  645610.,  785890.,  1021400.,
      1243150., 1263350., 980600.,  712570.,  530264.,  683040.,  823400.,
      836360.,  642208.,  461240.,  318102.,  404040.,  479610.,  486930.,
      367272.,  258558.,  866166.,  1131720., 1385370., 1402290., 1096488.,
      803166.,  1052600., 1369760., 1669640., 1689000., 1314592., 958232.,
      1178290., 1525400., 1849150., 1869350., 1446200., 1047370., 1256770.,
      1626200., 1970350., 1990550., 1539320., 1114330., 837848.,  1074720.,
      1289960., 1302920., 997024.,  713528.,  496950.,  628680.,  743130.,
      750450.,  564264.,  395934.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      394750.,  414950.,  515950.,  536150.,  1121950., 1142150.,
      1243150., 1263350., 1849150., 1869350., 1970350., 1990550.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186402.,  187500.,  257400.,  258960.,  332190.,  334260.,  365790.,
      368100.,  297144.,  299088.,  225858.,  227388.,  319864.,  321904.,
      432672.,  435520.,  547720.,  551440.,  586120.,  590160.,  469280.,
      472640.,  351736.,  354352.,  469790.,  473060.,  627080.,  631600.,
      783650.,  789500.,  823650.,  829900.,  652360.,  657520.,  483710.,
      487700.,  625310.,  630020.,  826760.,  833200.,  1023650., 1031900.,
      1063650., 1072300., 836680.,  843760.,  616190.,  621620.,  441016.,
      445360.,  576800.,  582720.,  706120.,  713680.,  731720.,  739600.,
      568352.,  574784.,  412984.,  417904.,  274818.,  278508.,  353784.,
      358800.,  425790.,  432180.,  440190.,  446820.,  335160.,  340560.,
      238242.,  242364.,  953634.,  959916.,  1252728., 1261200., 1541790.,
      1552500., 1575390., 1586340., 1237176., 1246032., 910146.,  916860.,
      1204600., 1213552., 1575456., 1587520., 1930120., 1945360., 1968520.,
      1984080., 1538336., 1550912., 1125880., 1135408., 1402910., 1414820.,
      1825160., 1841200., 2223650., 2243900., 2263650., 2284300., 1758280.,
      1774960., 1278590., 1291220., 1558430., 1571780., 2024840., 2042800.,
      2463650., 2486300., 2503650., 2526700., 1942600., 1961200., 1411070.,
      1425140., 1049272., 1060528., 1350944., 1366080., 1627720., 1646800.,
      1653320., 1672720., 1268768., 1284416., 910648.,  922480.,  627330.,
      636204.,  796152.,  808080.,  944190.,  959220.,  958590.,  973860.,
      722232.,  734544.,  507810.,  517116.,  1720866., 1732332., 2248056.,
      2263440., 2751390., 2770740., 2784990., 2804580., 2177208., 2192976.,
      1594434., 1606332., 2089336., 2105200., 2718240., 2739520., 3312520.,
      3339280., 3350920., 3378000., 2607392., 2629184., 1900024., 1916464.,
      2336030., 2356580., 3023240., 3050800., 3663650., 3698300., 3703650.,
      3738700., 2864200., 2892400., 2073470., 2094740., 2491550., 2513540.,
      3222920., 3252400., 3903650., 3940700., 3943650., 3981100., 3048520.,
      3078640., 2205950., 2228660., 1657528., 1675696., 2125088., 2149440.,
      2549320., 2579920., 2574920., 2605840., 1969184., 1994048., 1408312.,
      1427056., 979842.,  993900.,  1238520., 1257360., 1462590., 1486260.,
      1476990., 1500900., 1109304., 1128528., 777378.,  791868.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      783650.,  789500.,  823650.,  829900.,  1023650., 1031900.,
      1063650., 1072300., 2223650., 2243900., 2263650., 2284300.,
      2463650., 2486300., 2503650., 2526700., 3663650., 3698300.,
      3703650., 3738700., 3903650., 3940700., 3943650., 3981100.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371706.,  372804.,  373902.,  375000.,  513240.,  514800.,  516360.,
      517920.,  662310.,  664380.,  666450.,  668520.,  729270.,  731580.,
      733890.,  736200.,  592344.,  594288.,  596232.,  598176.,  450186.,
      451716.,  453246.,  454776.,  637688.,  639728.,  641768.,  643808.,
      862496.,  865344.,  868192.,  871040.,  1091720., 1095440., 1099160.,
      1102880., 1168200., 1172240., 1176280., 1180320., 935200.,  938560.,
      941920.,  945280.,  700856.,  703472.,  706088.,  708704.,  936310.,
      939580.,  942850.,  946120.,  1249640., 1254160., 1258680., 1263200.,
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 1299560., 1304720., 1309880., 1315040., 963430.,  967420.,
      971410.,  975400.,  1245910., 1250620., 1255330., 1260040., 1647080.,
      1653520., 1659960., 1666400., 2039050., 2047300., 2055550., 2063800.,
      2118650., 2127300., 2135950., 2144600., 1666280., 1673360., 1680440.,
      1687520., 1226950., 1232380., 1237810., 1243240., 877688.,  882032.,
      886376.,  890720.,  1147680., 1153600., 1159520., 1165440., 1404680.,
      1412240., 1419800., 1427360., 1455560., 1463440., 1471320., 1479200.,
      1130272., 1136704., 1143136., 1149568., 821048.,  825968.,  830888.,
      835808.,  545946.,  549636.,  553326.,  557016.,  702552.,  707568.,
      712584.,  717600.,  845190.,  851580.,  857970.,  864360.,  873750.,
      880380.,  887010.,  893640.,  664920.,  670320.,  675720.,  681120.,
      472362.,  476484.,  480606.,  484728.,  1900986., 1907268., 1913550.,
      1919832., 2496984., 2505456., 2513928., 2522400., 3072870., 3083580.,
      3094290., 3105000., 3139830., 3150780., 3161730., 3172680., 2465496.,
      2474352., 2483208., 2492064., 1813578., 1820292., 1827006., 1833720.,
      2400248., 2409200., 2418152., 2427104., 3138848., 3150912., 3162976.,
      3175040., 3845000., 3860240., 3875480., 3890720., 3921480., 3937040.,
      3952600., 3968160., 3064096., 3076672., 3089248., 3101824., 2242232.,
      2251760., 2261288., 2270816., 2793910., 2805820., 2817730., 2829640.,
      3634280., 3650320., 3666360., 3682400., 4427050., 4447300., 4467550.,
      4487800., 4506650., 4527300., 4547950., 4568600., 3499880., 3516560.,
      3533240., 3549920., 2544550., 2557180., 2569810., 2582440., 3103510.,
      3116860., 3130210., 3143560., 4031720., 4049680., 4067640., 4085600.,
      4904650., 4927300., 4949950., 4972600., 4984250., 5007300., 5030350.,
      5053400., 3866600., 3885200., 3903800., 3922400., 2808070., 2822140.,
      2836210., 2850280., 2087288., 2098544., 2109800., 2121056., 2686752.,
      2701888., 2717024., 2732160., 3236360., 3255440., 3274520., 3293600.,
      3287240., 3306640., 3326040., 3345440., 2521888., 2537536., 2553184.,
      2568832., 1809464., 1821296., 1833128., 1844960., 1245786., 1254660.,
      1263534., 1272408., 1580376., 1592304., 1604232., 1616160., 1873350.,
      1888380., 1903410., 1918440., 1901910., 1917180., 1932450., 1947720.,
      1432152., 1444464., 1456776., 1469088., 1006314., 1015620., 1024926.,
      1034232., 3430266., 3441732., 3453198., 3464664., 4480728., 4496112.,
      4511496., 4526880., 5483430., 5502780., 5522130., 5541480., 5550390.,
      5569980., 5589570., 5609160., 4338648., 4354416., 4370184., 4385952.,
      3176970., 3188868., 3200766., 3212664., 4162808., 4178672., 4194536.,
      4210400., 5415200., 5436480., 5457760., 5479040., 6598280., 6625040.,
      6651800., 6678560., 6674760., 6701840., 6728920., 6756000., 5192992.,
      5214784., 5236576., 5258368., 3783608., 3800048., 3816488., 3832928.,
      4651510., 4672060., 4692610., 4713160., 6018920., 6046480., 6074040.,
      6101600., 7292650., 7327300., 7361950., 7396600., 7372250., 7407300.,
      7442350., 7477400., 5700200., 5728400., 5756600., 5784800., 4125670.,
      4146940., 4168210., 4189480., 4961110., 4983100., 5005090., 5027080.,
      6416360., 6445840., 6475320., 6504800., 7770250., 7807300., 7844350.,
      7881400., 7849850., 7887300., 7924750., 7962200., 6066920., 6097040.,
      6127160., 6157280., 4389190., 4411900., 4434610., 4457320., 3296888.,
      3315056., 3333224., 3351392., 4225824., 4250176., 4274528., 4298880.,
      5068040., 5098640., 5129240., 5159840., 5118920., 5149840., 5180760.,
      5211680., 3913504., 3938368., 3963232., 3988096., 2797880., 2816624.,
      2835368., 2854112., 1945626., 1959684., 1973742., 1987800., 2458200.,
      2477040., 2495880., 2514720., 2901510., 2925180., 2948850., 2972520.,
      2930070., 2953980., 2977890., 3001800., 2199384., 2218608., 2237832.,
      2257056., 1540266., 1554756., 1569246., 1583736.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 2039050., 2047300., 2055550., 2063800., 2118650., 2127300.,
      2135950., 2144600., 4427050., 4447300., 4467550., 4487800., 4506650.,
      4527300., 4547950., 4568600., 4904650., 4927300., 4949950., 4972600.,
      4984250., 5007300., 5030350., 5053400., 7292650., 7327300., 7361950.,
      7396600., 7372250., 7407300., 7442350., 7477400., 7770250., 7807300.,
      7844350., 7881400., 7849850., 7887300., 7924750., 7962200.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755.,  2404.,  3080.,  3350.,  3620.,  2920.,  2205.,  3008.,  4048.,
      5100.,  5410.,  5720.,  4560.,  3404.,  4420.,  5880.,  7325.,  7650.,
      7975.,  6300.,  4660.,  5890.,  7770.,  9600.,  9925.,  10250., 8050.,
      5920.,  4190.,  5472.,  6690.,  6900.,  7110.,  5520.,  4010.,  2646.,
      3406.,  4100.,  4220.,  4340.,  3310.,  2358.,  8937.,  11728., 14420.,
      14690., 14960., 11740., 8631.,  11324., 14800., 18120., 18430., 18740.,
      14640., 10712., 13240., 17220., 20975., 21300., 21625., 16800., 12220.,
      14710., 19110., 23250., 23575., 23900., 18550., 13480., 9986.,  12864.,
      15510., 15720., 15930., 12240., 8798.,  6048.,  7690.,  9140.,  9260.,
      9380.,  7090.,  5004.,  16119., 21052., 25760., 26030., 26300., 20560.,
      15057., 19640., 25552., 31140., 31450., 31760., 24720., 18020., 22060.,
      28560., 34625., 34950., 35275., 27300., 19780., 23530., 30450., 36900.,
      37225., 37550., 29050., 21040., 15782., 20256., 24330., 24540., 24750.,
      18960., 13586., 9450.,  11974., 14180., 14300., 14420., 10870., 7650.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7325.,  7650.,  7975.,  9600.,  9925.,  10250., 20975., 21300., 21625.,
      23250., 23575., 23900., 34625., 34950., 35275., 36900., 37225., 37550.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  4694.,  4808.,  6010.,  6160.,  6535.,  6700.,  7060.,
      7240.,  5690.,  5840.,  4293.,  4410.,  5866.,  6016.,  7888.,  8096.,
      9930.,  10200., 10530., 10820., 11130., 11440., 8864.,  9120.,  6610.,
      6808.,  8600.,  8840.,  11430., 11760., 14225., 14650., 14850., 15300.,
      15475., 15950., 12210., 12600., 9020.,  9320.,  11435., 11780., 15070.,
      15540., 18600., 19200., 19225., 19850., 19850., 20500., 15570., 16100.,
      11435., 11840., 8062.,  8380.,  10512., 10944., 12830., 13380., 13230.,
      13800., 13630., 14220., 10560., 11040., 7654.,  8020.,  5022.,  5292.,
      6446.,  6812.,  7735.,  8200.,  7960.,  8440.,  8185.,  8680.,  6218.,
      6620.,  4410.,  4716.,  17415., 17874., 22838., 23456., 28060., 28840.,
      28585., 29380., 29110., 29920., 22826., 23480., 16767., 17262., 21994.,
      22648., 28720., 29600., 35130., 36240., 35730., 36860., 36330., 37480.,
      28352., 29280., 20722., 21424., 25610., 26480., 33270., 34440., 40475.,
      41950., 41100., 42600., 41725., 43250., 32370., 33600., 23510., 24440.,
      28445., 29420., 36910., 38220., 44850., 46500., 45475., 47150., 46100.,
      47800., 35730., 37100., 25925., 26960., 19150., 19972., 24624., 25728.,
      29630., 31020., 30030., 31440., 30430., 31860., 23328., 24480., 16726.,
      17596., 11448., 12096., 14510., 15380., 17185., 18280., 17410., 18520.,
      17635., 18760., 13274., 14180., 9324.,  10008., 31401., 32238., 40982.,
      42104., 50110., 51520., 50635., 52060., 51160., 52600., 39962., 41120.,
      29241., 30114., 38122., 39280., 49552., 51104., 60330., 62280., 60930.,
      62900., 61530., 63520., 47840., 49440., 34834., 36040., 42620., 44120.,
      55110., 57120., 66725., 69250., 67350., 69900., 67975., 70550., 52530.,
      54600., 38000., 39560., 45455., 47060., 58750., 60900., 71100., 73800.,
      71725., 74450., 72350., 75100., 55890., 58100., 40415., 42080., 30238.,
      31564., 38736., 40512., 46430., 48660., 46830., 49080., 47230., 49500.,
      36096., 37920., 25798., 27172., 17874., 18900., 22574., 23948., 26635.,
      28360., 26860., 28600., 27085., 28840., 20330., 21740., 14238., 15300.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225., 14650., 14850., 15300., 15475., 15950., 18600., 19200., 19225.,
      19850., 19850., 20500., 40475., 41950., 41100., 42600., 41725., 43250.,
      44850., 46500., 45475., 47150., 46100., 47800., 66725., 69250., 67350.,
      69900., 67975., 70550., 71100., 73800., 71725., 74450., 72350., 75100.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,   6858.,   6939.,   7020.,   9274.,   9388.,   9502.,   9616.,
      11870.,  12020.,  12170.,  12320.,  12905.,  13070.,  13235.,  13400.,
      13940.,  14120.,  14300.,  14480.,  11230.,  11380.,  11530.,  11680.,
      8469.,   8586.,   8703.,   8820.,   11582.,  11732.,  11882.,  12032.,
      15568.,  15776.,  15984.,  16192.,  19590.,  19860.,  20130.,  20400.,
      20770.,  21060.,  21350.,  21640.,  21950.,  22260.,  22570.,  22880.,
      17472.,  17728.,  17984.,  18240.,  13022.,  13220.,  13418.,  13616.,
      16960.,  17200.,  17440.,  17680.,  22530.,  22860.,  23190.,  23520.,
      28025.,  28450.,  28875.,  29300.,  29250.,  29700.,  30150.,  30600.,
      30475.,  30950.,  31425.,  31900.,  24030.,  24420.,  24810.,  25200.,
      17740.,  18040.,  18340.,  18640.,  22525.,  22870.,  23215.,  23560.,
      29670.,  30140.,  30610.,  31080.,  36600.,  37200.,  37800.,  38400.,
      37825.,  38450.,  39075.,  39700.,  39050.,  39700.,  40350.,  41000.,
      30610.,  31140.,  31670.,  32200.,  22465.,  22870.,  23275.,  23680.,
      15806.,  16124.,  16442.,  16760.,  20592.,  21024.,  21456.,  21888.,
      25110.,  25660.,  26210.,  26760.,  25890.,  26460.,  27030.,  27600.,
      26670.,  27260.,  27850.,  28440.,  20640.,  21120.,  21600.,  22080.,
      14942.,  15308.,  15674.,  16040.,  9774.,   10044.,  10314.,  10584.,
      12526.,  12892.,  13258.,  13624.,  15005.,  15470.,  15935.,  16400.,
      15440.,  15920.,  16400.,  16880.,  15875.,  16370.,  16865.,  17360.,
      12034.,  12436.,  12838.,  13240.,  8514.,   8820.,   9126.,   9432.,
      34371.,  34830.,  35289.,  35748.,  45058.,  45676.,  46294.,  46912.,
      55340.,  56120.,  56900.,  57680.,  56375.,  57170.,  57965.,  58760.,
      57410.,  58220.,  59030.,  59840.,  44998.,  45652.,  46306.,  46960.,
      33039.,  33534.,  34029.,  34524.,  43334.,  43988.,  44642.,  45296.,
      56560.,  57440.,  58320.,  59200.,  69150.,  70260.,  71370.,  72480.,
      70330.,  71460.,  72590.,  73720.,  71510.,  72660.,  73810.,  74960.,
      55776.,  56704.,  57632.,  58560.,  40742.,  41444.,  42146.,  42848.,
      50350.,  51220.,  52090.,  52960.,  65370.,  66540.,  67710.,  68880.,
      79475.,  80950.,  82425.,  83900.,  80700.,  82200.,  83700.,  85200.,
      81925.,  83450.,  84975.,  86500.,  63510.,  64740.,  65970.,  67200.,
      46090.,  47020.,  47950.,  48880.,  55915.,  56890.,  57865.,  58840.,
      72510.,  73820.,  75130.,  76440.,  88050.,  89700.,  91350.,  93000.,
      89275.,  90950.,  92625.,  94300.,  90500.,  92200.,  93900.,  95600.,
      70090.,  71460.,  72830.,  74200.,  50815.,  51850.,  52885.,  53920.,
      37478.,  38300.,  39122.,  39944.,  48144.,  49248.,  50352.,  51456.,
      57870.,  59260.,  60650.,  62040.,  58650.,  60060.,  61470.,  62880.,
      59430.,  60860.,  62290.,  63720.,  45504.,  46656.,  47808.,  48960.,
      32582.,  33452.,  34322.,  35192.,  22248.,  22896.,  23544.,  24192.,
      28150.,  29020.,  29890.,  30760.,  33275.,  34370.,  35465.,  36560.,
      33710.,  34820.,  35930.,  37040.,  34145.,  35270.,  36395.,  37520.,
      25642.,  26548.,  27454.,  28360.,  17964.,  18648.,  19332.,  20016.,
      61965.,  62802.,  63639.,  64476.,  80842.,  81964.,  83086.,  84208.,
      98810.,  100220., 101630., 103040., 99845.,  101270., 102695., 104120.,
      100880., 102320., 103760., 105200., 78766.,  79924.,  81082.,  82240.,
      57609.,  58482.,  59355.,  60228.,  75086.,  76244.,  77402.,  78560.,
      97552.,  99104.,  100656., 102208., 118710., 120660., 122610., 124560.,
      119890., 121860., 123830., 125800., 121070., 123060., 125050., 127040.,
      94080.,  95680.,  97280.,  98880.,  68462.,  69668.,  70874.,  72080.,
      83740.,  85240.,  86740.,  88240.,  108210., 110220., 112230., 114240.,
      130925., 133450., 135975., 138500., 132150., 134700., 137250., 139800.,
      133375., 135950., 138525., 141100., 102990., 105060., 107130., 109200.,
      74440.,  76000.,  77560.,  79120.,  89305.,  90910.,  92515.,  94120.,
      115350., 117500., 119650., 121800., 139500., 142200., 144900., 147600.,
      140725., 143450., 146175., 148900., 141950., 144700., 147450., 150200.,
      109570., 111780., 113990., 116200., 79165.,  80830.,  82495.,  84160.,
      59150.,  60476.,  61802.,  63128.,  75696.,  77472.,  79248.,  81024.,
      90630.,  92860.,  95090.,  97320.,  91410.,  93660.,  95910.,  98160.,
      92190.,  94460.,  96730.,  99000.,  70368.,  72192.,  74016.,  75840.,
      50222.,  51596.,  52970.,  54344.,  34722.,  35748.,  36774.,  37800.,
      43774.,  45148.,  46522.,  47896.,  51545.,  53270.,  54995.,  56720.,
      51980.,  53720.,  55460.,  57200.,  52415.,  54170.,  55925.,  57680.,
      39250.,  40660.,  42070.,  43480.,  27414.,  28476.,  29538.,  30600.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025.,  28450.,  28875.,  29300.,  29250.,  29700.,  30150.,  30600.,
      30475.,  30950.,  31425.,  31900.,  36600.,  37200.,  37800.,  38400.,
      37825.,  38450.,  39075.,  39700.,  39050.,  39700.,  40350.,  41000.,
      79475.,  80950.,  82425.,  83900.,  80700.,  82200.,  83700.,  85200.,
      81925.,  83450.,  84975.,  86500.,  88050.,  89700.,  91350.,  93000.,
      89275.,  90950.,  92625.,  94300.,  90500.,  92200.,  93900.,  95600.,
      130925., 133450., 135975., 138500., 132150., 134700., 137250., 139800.,
      133375., 135950., 138525., 141100., 139500., 142200., 144900., 147600.,
      140725., 143450., 146175., 148900., 141950., 144700., 147450., 150200.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13545.,  18572.,  23815.,  25945.,  28075.,  22652.,  17109.,  23380.,
      31472.,  39660.,  42100.,  44540.,  35504.,  26500.,  34475.,  45860.,
      57125.,  59675.,  62225.,  49140.,  36335.,  46025.,  60700.,  74975.,
      77525.,  80075.,  62860.,  46205.,  32620.,  42576.,  52020.,  53660.,
      55300.,  42896.,  31132.,  20475.,  26324.,  31645.,  32575.,  33505.,
      25508.,  18135.,  70245.,  92156.,  113275., 115405., 117535., 92204.,
      67761.,  88900.,  116144., 142140., 144580., 147020., 114800., 83956.,
      103775., 134900., 164225., 166775., 169325., 131460., 95555.,  115325.,
      149740., 182075., 184625., 187175., 145180., 105425., 77980.,  100368.,
      120900., 122540., 124180., 95312.,  68428.,  46935.,  59588.,  70705.,
      71635.,  72565.,  54740.,  38547.,  126945., 165740., 202735., 204865.,
      206995., 161756., 118413., 154420., 200816., 244620., 247060., 249500.,
      194096., 141412., 173075., 223940., 271325., 273875., 276425., 213780.,
      154775., 184625., 238780., 289175., 291725., 294275., 227500., 164645.,
      123340., 158160., 189780., 191420., 193060., 147728., 105724., 73395.,
      92852.,  109765., 110695., 111625., 83972.,  58959.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      57125.,  59675.,  62225.,  74975.,  77525.,  80075.,
      164225., 166775., 169325., 182075., 184625., 187175.,
      271325., 273875., 276425., 289175., 291725., 294275.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26775.,  27090.,  36700.,  37144.,  47045.,  47630.,  51245.,  51890.,
      55445.,  56150.,  44716.,  45304.,  33759.,  34218.,  46172.,  46760.,
      62128.,  62944.,  78260.,  79320.,  83060.,  84200.,  87860.,  89080.,
      70000.,  71008.,  52220.,  53000.,  68005.,  68950.,  90420.,  91720.,
      112575., 114250., 117575., 119350., 122575., 124450., 96740.,  98280.,
      71485.,  72670.,  90685.,  92050.,  119540., 121400., 147575., 149950.,
      152575., 155050., 157575., 160150., 123620., 125720., 90805.,  92410.,
      63980.,  65240.,  83440.,  85152.,  101860., 104040., 105060., 107320.,
      108260., 110600., 83888.,  85792.,  60812.,  62264.,  39879.,  40950.,
      51196.,  52648.,  61445.,  63290.,  63245.,  65150.,  65045.,  67010.,
      49420.,  51016.,  35055.,  36270.,  138663., 140490., 181852., 184312.,
      223445., 226550., 227645., 230810., 231845., 235070., 181804., 184408.,
      133551., 135522., 175196., 177800., 228784., 232288., 279860., 284280.,
      284660., 289160., 289460., 294040., 225904., 229600., 165116., 167912.,
      204085., 207550., 265140., 269800., 322575., 328450., 327575., 333550.,
      332575., 338650., 258020., 262920., 187405., 191110., 226765., 230650.,
      294260., 299480., 357575., 364150., 362575., 369250., 367575., 374350.,
      284900., 290360., 206725., 210850., 152684., 155960., 196336., 200736.,
      236260., 241800., 239460., 245080., 242660., 248360., 186032., 190624.,
      133388., 136856., 91287.,  93870.,  115708., 119176., 137045., 141410.,
      138845., 143270., 140645., 145130., 105868., 109480., 74367.,  77094.,
      250551., 253890., 327004., 331480., 399845., 405470., 404045., 409730.,
      408245., 413990., 318892., 323512., 233343., 236826., 304220., 308840.,
      395440., 401632., 481460., 489240., 486260., 494120., 491060., 499000.,
      381808., 388192., 278012., 282824., 340165., 346150., 439860., 447880.,
      532575., 542650., 537575., 547750., 542575., 552850., 419300., 427560.,
      303325., 309550., 362845., 369250., 468980., 477560., 567575., 578350.,
      572575., 583450., 577575., 588550., 446180., 455000., 322645., 329290.,
      241388., 246680., 309232., 316320., 370660., 379560., 373860., 382840.,
      377060., 386120., 288176., 295456., 205964., 211448., 142695., 146790.,
      180220., 185704., 212645., 219530., 214445., 221390., 216245., 223250.,
      162316., 167944., 113679., 117918.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      112575., 114250., 117575., 119350., 122575., 124450., 147575., 149950.,
      152575., 155050., 157575., 160150., 322575., 328450., 327575., 333550.,
      332575., 338650., 357575., 364150., 362575., 369250., 367575., 374350.,
      532575., 542650., 537575., 547750., 542575., 552850., 567575., 578350.,
      572575., 583450., 577575., 588550.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53235.,   53550.,   53865.,   54180.,   72956.,   73400.,   73844.,
      74288.,   93505.,   94090.,   94675.,   95260.,   101845.,  102490.,
      103135.,  103780.,  110185.,  110890.,  111595.,  112300.,  88844.,
      89432.,   90020.,   90608.,   67059.,   67518.,   67977.,   68436.,
      91756.,   92344.,   92932.,   93520.,   123440.,  124256.,  125072.,
      125888.,  155460.,  156520.,  157580.,  158640.,  164980.,  166120.,
      167260.,  168400.,  174500.,  175720.,  176940.,  178160.,  138992.,
      140000.,  141008.,  142016.,  103660.,  104440.,  105220.,  106000.,
      135065.,  136010.,  136955.,  137900.,  179540.,  180840.,  182140.,
      183440.,  223475.,  225150.,  226825.,  228500.,  233375.,  235150.,
      236925.,  238700.,  243275.,  245150.,  247025.,  248900.,  191940.,
      193480.,  195020.,  196560.,  141785.,  142970.,  144155.,  145340.,
      180005.,  181370.,  182735.,  184100.,  237220.,  239080.,  240940.,
      242800.,  292775.,  295150.,  297525.,  299900.,  302675.,  305150.,
      307625.,  310100.,  312575.,  315150.,  317725.,  320300.,  245140.,
      247240.,  249340.,  251440.,  180005.,  181610.,  183215.,  184820.,
      126700.,  127960.,  129220.,  130480.,  165168.,  166880.,  168592.,
      170304.,  201540.,  203720.,  205900.,  208080.,  207860.,  210120.,
      212380.,  214640.,  214180.,  216520.,  218860.,  221200.,  165872.,
      167776.,  169680.,  171584.,  120172.,  121624.,  123076.,  124528.,
      78687.,   79758.,   80829.,   81900.,   100940.,  102392.,  103844.,
      105296.,  121045.,  122890.,  124735.,  126580.,  124585.,  126490.,
      128395.,  130300.,  128125.,  130090.,  132055.,  134020.,  97244.,
      98840.,   100436.,  102032.,  68895.,   70110.,   71325.,   72540.,
      275499.,  277326.,  279153.,  280980.,  361244.,  363704.,  366164.,
      368624.,  443785.,  446890.,  449995.,  453100.,  452125.,  455290.,
      458455.,  461620.,  460465.,  463690.,  466915.,  470140.,  361004.,
      363608.,  366212.,  368816.,  265131.,  267102.,  269073.,  271044.,
      347788.,  350392.,  352996.,  355600.,  454064.,  457568.,  461072.,
      464576.,  555300.,  559720.,  564140.,  568560.,  564820.,  569320.,
      573820.,  578320.,  574340.,  578920.,  583500.,  588080.,  448112.,
      451808.,  455504.,  459200.,  327436.,  330232.,  333028.,  335824.,
      404705.,  408170.,  411635.,  415100.,  525620.,  530280.,  534940.,
      539600.,  639275.,  645150.,  651025.,  656900.,  649175.,  655150.,
      661125.,  667100.,  659075.,  665150.,  671225.,  677300.,  511140.,
      516040.,  520940.,  525840.,  371105.,  374810.,  378515.,  382220.,
      449645.,  453530.,  457415.,  461300.,  583300.,  588520.,  593740.,
      598960.,  708575.,  715150.,  721725.,  728300.,  718475.,  725150.,
      731825.,  738500.,  728375.,  735150.,  741925.,  748700.,  564340.,
      569800.,  575260.,  580720.,  409325.,  413450.,  417575.,  421700.,
      302092.,  305368.,  308644.,  311920.,  388272.,  392672.,  397072.,
      401472.,  466980.,  472520.,  478060.,  483600.,  473300.,  478920.,
      484540.,  490160.,  479620.,  485320.,  491020.,  496720.,  367472.,
      372064.,  376656.,  381248.,  263308.,  266776.,  270244.,  273712.,
      179991.,  182574.,  185157.,  187740.,  227948.,  231416.,  234884.,
      238352.,  269725.,  274090.,  278455.,  282820.,  273265.,  277690.,
      282115.,  286540.,  276805.,  281290.,  285775.,  290260.,  208124.,
      211736.,  215348.,  218960.,  146007.,  148734.,  151461.,  154188.,
      497763.,  501102.,  504441.,  507780.,  649532.,  654008.,  658484.,
      662960.,  794065.,  799690.,  805315.,  810940.,  802405.,  808090.,
      813775.,  819460.,  810745.,  816490.,  822235.,  827980.,  633164.,
      637784.,  642404.,  647024.,  463203.,  466686.,  470169.,  473652.,
      603820.,  608440.,  613060.,  617680.,  784688.,  790880.,  797072.,
      803264.,  955140.,  962920.,  970700.,  978480.,  964660.,  972520.,
      980380.,  988240.,  974180.,  982120.,  990060.,  998000.,  757232.,
      763616.,  770000.,  776384.,  551212.,  556024.,  560836.,  565648.,
      674345.,  680330.,  686315.,  692300.,  871700.,  879720.,  887740.,
      895760.,  1055075., 1065150., 1075225., 1085300., 1064975., 1075150.,
      1085325., 1095500., 1074875., 1085150., 1095425., 1105700., 830340.,
      838600.,  846860.,  855120.,  600425.,  606650.,  612875.,  619100.,
      719285.,  725690.,  732095.,  738500.,  929380.,  937960.,  946540.,
      955120.,  1124375., 1135150., 1145925., 1156700., 1134275., 1145150.,
      1156025., 1166900., 1144175., 1155150., 1166125., 1177100., 883540.,
      892360.,  901180.,  910000.,  638645.,  645290.,  651935.,  658580.,
      477484.,  482776.,  488068.,  493360.,  611376.,  618464.,  625552.,
      632640.,  732420.,  741320.,  750220.,  759120.,  738740.,  747720.,
      756700.,  765680.,  745060.,  754120.,  763180.,  772240.,  569072.,
      576352.,  583632.,  590912.,  406444.,  411928.,  417412.,  422896.,
      281295.,  285390.,  289485.,  293580.,  354956.,  360440.,  365924.,
      371408.,  418405.,  425290.,  432175.,  439060.,  421945.,  428890.,
      435835.,  442780.,  425485.,  432490.,  439495.,  446500.,  319004.,
      324632.,  330260.,  335888.,  223119.,  227358.,  231597.,  235836.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      223475.,  225150.,  226825.,  228500.,  233375.,  235150.,  236925.,
      238700.,  243275.,  245150.,  247025.,  248900.,  292775.,  295150.,
      297525.,  299900.,  302675.,  305150.,  307625.,  310100.,  312575.,
      315150.,  317725.,  320300.,  639275.,  645150.,  651025.,  656900.,
      649175.,  655150.,  661125.,  667100.,  659075.,  665150.,  671225.,
      677300.,  708575.,  715150.,  721725.,  728300.,  718475.,  725150.,
      731825.,  738500.,  728375.,  735150.,  741925.,  748700.,  1055075.,
      1065150., 1075225., 1085300., 1064975., 1075150., 1085325., 1095500.,
      1074875., 1085150., 1095425., 1105700., 1124375., 1135150., 1145925.,
      1156700., 1134275., 1145150., 1156025., 1166900., 1144175., 1155150.,
      1166125., 1177100.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      106398.,  145960.,  187250.,  204170.,  221090.,  178408.,  134766.,
      184328.,  248160.,  312760.,  332120.,  351480.,  280160.,  209096.,
      272290.,  362200.,  451150.,  471350.,  491550.,  388120.,  286930.,
      363850.,  479800.,  592550.,  612750.,  632950.,  496760.,  365050.,
      257384.,  335840.,  410200.,  423160.,  436120.,  338144.,  245288.,
      161046.,  206920.,  248570.,  255890.,  263210.,  200200.,  142182.,
      556974.,  730600.,  897890.,  914810.,  931730.,  730792.,  536958.,
      704456.,  920160.,  1125880., 1145240., 1164600., 909152.,  664712.,
      821650.,  1067800., 1299550., 1319750., 1339950., 1039960., 755650.,
      913210.,  1185400., 1440950., 1461150., 1481350., 1148600., 833770.,
      616232.,  792800.,  954520.,  967480.,  980440.,  752096.,  539624.,
      369702.,  469000.,  556010.,  563330.,  570650.,  430024.,  302454.,
      1007550., 1315240., 1608530., 1625450., 1642370., 1283176., 939150.,
      1224584., 1592160., 1939000., 1958360., 1977720., 1538144., 1120328.,
      1371010., 1773400., 2147950., 2168150., 2188350., 1691800., 1224370.,
      1462570., 1891000., 2289350., 2309550., 2329750., 1800440., 1302490.,
      975080.,  1249760., 1498840., 1511800., 1524760., 1166048., 833960.,
      578358.,  731080.,  863450.,  870770.,  878090.,  659848.,  462726.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      451150.,  471350.,  491550.,  592550.,  612750.,  632950.,
      1299550., 1319750., 1339950., 1440950., 1461150., 1481350.,
      2147950., 2168150., 2188350., 2289350., 2309550., 2329750.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      211554.,  212796.,  290168.,  291920.,  372190.,  374500.,  405790.,
      408340.,  439390.,  442180.,  354488.,  356816.,  267714.,  269532.,
      366328.,  368656.,  493088.,  496320.,  621320.,  625520.,  659720.,
      664240.,  698120.,  702960.,  556320.,  560320.,  415096.,  418192.,
      540830.,  544580.,  719240.,  724400.,  895650.,  902300.,  935650.,
      942700.,  975650.,  983100.,  770120.,  776240.,  569150.,  573860.,
      722270.,  727700.,  952200.,  959600.,  1175650., 1185100., 1215650.,
      1225500., 1255650., 1265900., 985160.,  993520.,  723710.,  730100.,
      509752.,  514768.,  664864.,  671680.,  811720.,  820400.,  837320.,
      846320.,  862920.,  872240.,  668704.,  676288.,  484792.,  490576.,
      317826.,  322092.,  408056.,  413840.,  489790.,  497140.,  504190.,
      511780.,  518590.,  526420.,  394040.,  400400.,  279522.,  284364.,
      1106658., 1113948., 1451384., 1461200., 1783390., 1795780., 1816990.,
      1829620., 1850590., 1863460., 1451192., 1461584., 1066050., 1073916.,
      1398520., 1408912., 1826336., 1840320., 2234120., 2251760., 2272520.,
      2290480., 2310920., 2329200., 1803552., 1818304., 1318264., 1329424.,
      1629470., 1643300., 2117000., 2135600., 2575650., 2599100., 2615650.,
      2639500., 2655650., 2679900., 2060360., 2079920., 1496510., 1511300.,
      1810910., 1826420., 2349960., 2370800., 2855650., 2881900., 2895650.,
      2922300., 2935650., 2962700., 2275400., 2297200., 1651070., 1667540.,
      1219384., 1232464., 1568032., 1585600., 1886920., 1909040., 1912520.,
      1934960., 1938120., 1960880., 1485856., 1504192., 1065400., 1079248.,
      729090.,  739404.,  924152.,  938000.,  1094590., 1112020., 1108990.,
      1126660., 1123390., 1141300., 845624.,  860048.,  594018.,  604908.,
      2001762., 2015100., 2612600., 2630480., 3194590., 3217060., 3228190.,
      3250900., 3261790., 3284740., 2547896., 2566352., 1864386., 1878300.,
      2430712., 2449168., 3159584., 3184320., 3846920., 3878000., 3885320.,
      3916720., 3923720., 3955440., 3050784., 3076288., 2221432., 2240656.,
      2718110., 2742020., 3514760., 3546800., 4255650., 4295900., 4295650.,
      4336300., 4335650., 4376700., 3350600., 3383600., 2423870., 2448740.,
      2899550., 2925140., 3747720., 3782000., 4535650., 4578700., 4575650.,
      4619100., 4615650., 4659500., 3565640., 3600880., 2578430., 2604980.,
      1929016., 1950160., 2471200., 2499520., 2962120., 2997680., 2987720.,
      3023600., 3013320., 3049520., 2303008., 2332096., 1646008., 1667920.,
      1140354., 1156716., 1440248., 1462160., 1699390., 1726900., 1713790.,
      1741540., 1728190., 1756180., 1297208., 1319696., 908514.,  925452.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      895650.,  902300.,  935650.,  942700.,  975650.,  983100.,
      1175650., 1185100., 1215650., 1225500., 1255650., 1265900.,
      2575650., 2599100., 2615650., 2639500., 2655650., 2679900.,
      2855650., 2881900., 2895650., 2922300., 2935650., 2962700.,
      4255650., 4295900., 4295650., 4336300., 4335650., 4376700.,
      4535650., 4578700., 4575650., 4619100., 4615650., 4659500.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      421866.,  423108.,  424350.,  425592.,  578584.,  580336.,  582088.,
      583840.,  742070.,  744380.,  746690.,  749000.,  809030.,  811580.,
      814130.,  816680.,  875990.,  878780.,  881570.,  884360.,  706648.,
      708976.,  711304.,  713632.,  533610.,  535428.,  537246.,  539064.,
      730328.,  732656.,  734984.,  737312.,  982944.,  986176.,  989408.,
      992640.,  1238440., 1242640., 1246840., 1251040., 1314920., 1319440.,
      1323960., 1328480., 1391400., 1396240., 1401080., 1405920., 1108640.,
      1112640., 1116640., 1120640., 827096.,  830192.,  833288.,  836384.,
      1077910., 1081660., 1085410., 1089160., 1433320., 1438480., 1443640.,
      1448800., 1784650., 1791300., 1797950., 1804600., 1864250., 1871300.,
      1878350., 1885400., 1943850., 1951300., 1958750., 1966200., 1534120.,
      1540240., 1546360., 1552480., 1133590., 1138300., 1143010., 1147720.,
      1439110., 1444540., 1449970., 1455400., 1897000., 1904400., 1911800.,
      1919200., 2341850., 2351300., 2360750., 2370200., 2421450., 2431300.,
      2441150., 2451000., 2501050., 2511300., 2521550., 2531800., 1961960.,
      1970320., 1978680., 1987040., 1441030., 1447420., 1453810., 1460200.,
      1014488., 1019504., 1024520., 1029536., 1322912., 1329728., 1336544.,
      1343360., 1614760., 1623440., 1632120., 1640800., 1665640., 1674640.,
      1683640., 1692640., 1716520., 1725840., 1735160., 1744480., 1329824.,
      1337408., 1344992., 1352576., 963800.,  969584.,  975368.,  981152.,
      631386.,  635652.,  639918.,  644184.,  810328.,  816112.,  821896.,
      827680.,  972230.,  979580.,  986930.,  994280.,  1000790., 1008380.,
      1015970., 1023560., 1029350., 1037180., 1045010., 1052840., 781720.,
      788080.,  794440.,  800800.,  554202.,  559044.,  563886.,  568728.,
      2206026., 2213316., 2220606., 2227896., 2892952., 2902768., 2912584.,
      2922400., 3554390., 3566780., 3579170., 3591560., 3621350., 3633980.,
      3646610., 3659240., 3688310., 3701180., 3714050., 3726920., 2891992.,
      2902384., 2912776., 2923168., 2124234., 2132100., 2139966., 2147832.,
      2786648., 2797040., 2807432., 2817824., 3638688., 3652672., 3666656.,
      3680640., 4450600., 4468240., 4485880., 4503520., 4527080., 4545040.,
      4563000., 4580960., 4603560., 4621840., 4640120., 4658400., 3592352.,
      3607104., 3621856., 3636608., 2625368., 2636528., 2647688., 2658848.,
      3245110., 3258940., 3272770., 3286600., 4215400., 4234000., 4252600.,
      4271200., 5127850., 5151300., 5174750., 5198200., 5207450., 5231300.,
      5255150., 5279000., 5287050., 5311300., 5335550., 5359800., 4101160.,
      4120720., 4140280., 4159840., 2978230., 2993020., 3007810., 3022600.,
      3606310., 3621820., 3637330., 3652840., 4679080., 4699920., 4720760.,
      4741600., 5685050., 5711300., 5737550., 5763800., 5764650., 5791300.,
      5817950., 5844600., 5844250., 5871300., 5898350., 5925400., 4529000.,
      4550800., 4572600., 4594400., 3285670., 3302140., 3318610., 3335080.,
      2425688., 2438768., 2451848., 2464928., 3118496., 3136064., 3153632.,
      3171200., 3751720., 3773840., 3795960., 3818080., 3802600., 3825040.,
      3847480., 3869920., 3853480., 3876240., 3899000., 3921760., 2953376.,
      2971712., 2990048., 3008384., 2116952., 2130800., 2144648., 2158496.,
      1447866., 1458180., 1468494., 1478808., 1834456., 1848304., 1862152.,
      1876000., 2171750., 2189180., 2206610., 2224040., 2200310., 2217980.,
      2235650., 2253320., 2228870., 2246780., 2264690., 2282600., 1676824.,
      1691248., 1705672., 1720096., 1177146., 1188036., 1198926., 1209816.,
      3990186., 4003524., 4016862., 4030200., 5207320., 5225200., 5243080.,
      5260960., 6366710., 6389180., 6411650., 6434120., 6433670., 6456380.,
      6479090., 6501800., 6500630., 6523580., 6546530., 6569480., 5077336.,
      5095792., 5114248., 5132704., 3714858., 3728772., 3742686., 3756600.,
      4842968., 4861424., 4879880., 4898336., 6294432., 6319168., 6343904.,
      6368640., 7662760., 7693840., 7724920., 7756000., 7739240., 7770640.,
      7802040., 7833440., 7815720., 7847440., 7879160., 7910880., 6076064.,
      6101568., 6127072., 6152576., 4423640., 4442864., 4462088., 4481312.,
      5412310., 5436220., 5460130., 5484040., 6997480., 7029520., 7061560.,
      7093600., 8471050., 8511300., 8551550., 8591800., 8550650., 8591300.,
      8631950., 8672600., 8630250., 8671300., 8712350., 8753400., 6668200.,
      6701200., 6734200., 6767200., 4822870., 4847740., 4872610., 4897480.,
      5773510., 5799100., 5824690., 5850280., 7461160., 7495440., 7529720.,
      7564000., 9028250., 9071300., 9114350., 9157400., 9107850., 9151300.,
      9194750., 9238200., 9187450., 9231300., 9275150., 9319000., 7096040.,
      7131280., 7166520., 7201760., 5130310., 5156860., 5183410., 5209960.,
      3836888., 3858032., 3879176., 3900320., 4914080., 4942400., 4970720.,
      4999040., 5888680., 5924240., 5959800., 5995360., 5939560., 5975440.,
      6011320., 6047200., 5990440., 6026640., 6062840., 6099040., 4576928.,
      4606016., 4635104., 4664192., 3270104., 3292016., 3313928., 3335840.,
      2264346., 2280708., 2297070., 2313432., 2858584., 2880496., 2902408.,
      2924320., 3371270., 3398780., 3426290., 3453800., 3399830., 3427580.,
      3455330., 3483080., 3428390., 3456380., 3484370., 3512360., 2571928.,
      2594416., 2616904., 2639392., 1800090., 1817028., 1833966., 1850904.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784650., 1791300., 1797950., 1804600., 1864250., 1871300., 1878350.,
      1885400., 1943850., 1951300., 1958750., 1966200., 2341850., 2351300.,
      2360750., 2370200., 2421450., 2431300., 2441150., 2451000., 2501050.,
      2511300., 2521550., 2531800., 5127850., 5151300., 5174750., 5198200.,
      5207450., 5231300., 5255150., 5279000., 5287050., 5311300., 5335550.,
      5359800., 5685050., 5711300., 5737550., 5763800., 5764650., 5791300.,
      5817950., 5844600., 5844250., 5871300., 5898350., 5925400., 8471050.,
      8511300., 8551550., 8591800., 8550650., 8591300., 8631950., 8672600.,
      8630250., 8671300., 8712350., 8753400., 9028250., 9071300., 9114350.,
      9157400., 9107850., 9151300., 9194750., 9238200., 9187450., 9231300.,
      9275150., 9319000.};
  const std::array<int, 4> in_shape = {{3, 6, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1956.,  2666.,  3400.,  3670.,  3940.,  4210.,  3380.,  2541.,  3380.,
      4532.,  5690.,  6000.,  6310.,  6620.,  5260.,  3914.,  4990.,  6620.,
      8225.,  8550.,  8875.,  9200.,  7250.,  5350.,  6670.,  8780.,  10825.,
      11150., 11475., 11800., 9250.,  6790.,  4748.,  6188.,  7550.,  7760.,
      7970.,  8180.,  6340.,  4598.,  3000.,  3854.,  4630.,  4750.,  4870.,
      4990.,  3800.,  2703.,  10164., 13322., 16360., 16630., 16900., 17170.,
      13460., 9885.,  12884., 16820., 20570., 20880., 21190., 21500., 16780.,
      12266., 15070., 19580., 23825., 24150., 24475., 24800., 19250., 13990.,
      16750., 21740., 26425., 26750., 27075., 27400., 21250., 15430., 11372.,
      14636., 17630., 17840., 18050., 18260., 14020., 10070., 6888.,  8750.,
      10390., 10510., 10630., 10750., 8120.,  5727.,  18372., 23978., 29320.,
      29590., 29860., 30130., 23540., 17229., 22388., 29108., 35450., 35760.,
      36070., 36380., 28300., 20618., 25150., 32540., 39425., 39750., 40075.,
      40400., 31250., 22630., 26830., 34700., 42025., 42350., 42675., 43000.,
      33250., 24070., 17996., 23084., 27710., 27920., 28130., 28340., 21700.,
      15542., 10776., 13646., 16150., 16270., 16390., 16510., 12440., 8751.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8225.,  8550.,  8875.,  9200.,  10825., 11150., 11475., 11800.,
      23825., 24150., 24475., 24800., 26425., 26750., 27075., 27400.,
      39425., 39750., 40075., 40400., 42025., 42350., 42675., 43000.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3822.,  3912.,  5206.,  5332.,  6635.,  6800.,  7160.,  7340.,  7685.,
      7880.,  8210.,  8420.,  6586.,  6760.,  4947.,  5082.,  6592.,  6760.,
      8832.,  9064.,  11080., 11380., 11680., 12000., 12280., 12620., 12880.,
      13240., 10224., 10520., 7600.,  7828.,  9710.,  9980.,  12870., 13240.,
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400., 14050.,
      14500., 10355., 10700., 12950., 13340., 17030., 17560., 20975., 21650.,
      21600., 22300., 22225., 22950., 22850., 23600., 17890., 18500., 13115.,
      13580., 9136.,  9496.,  11888., 12376., 14480., 15100., 14880., 15520.,
      15280., 15940., 15680., 16360., 12128., 12680., 8776.,  9196.,  5694.,
      6000.,  7294.,  7708.,  8735.,  9260.,  8960.,  9500.,  9185.,  9740.,
      9410.,  9980.,  7138.,  7600.,  5055.,  5406.,  19806., 20328., 25942.,
      26644., 31835., 32720., 32360., 33260., 32885., 33800., 33410., 34340.,
      26170., 26920., 19203., 19770., 25024., 25768., 32640., 33640., 39880.,
      41140., 40480., 41760., 41080., 42380., 41680., 43000., 32496., 33560.,
      23728., 24532., 29150., 30140., 37830., 39160., 45975., 47650., 46600.,
      48300., 47225., 48950., 47850., 49600., 37090., 38500., 26915., 27980.,
      32390., 33500., 41990., 43480., 50975., 52850., 51600., 53500., 52225.,
      54150., 52850., 54800., 40930., 42500., 29675., 30860., 21808., 22744.,
      28016., 29272., 33680., 35260., 34080., 35680., 34480., 36100., 34880.,
      36520., 26720., 28040., 19144., 20140., 13038., 13776., 16510., 17500.,
      19535., 20780., 19760., 21020., 19985., 21260., 20210., 21500., 15202.,
      16240., 10671., 11454., 35790., 36744., 46678., 47956., 57035., 58640.,
      57560., 59180., 58085., 59720., 58610., 60260., 45754., 47080., 33459.,
      34458., 43456., 44776., 56448., 58216., 68680., 70900., 69280., 71520.,
      69880., 72140., 70480., 72760., 54768., 56600., 39856., 41236., 48590.,
      50300., 62790., 65080., 75975., 78850., 76600., 79500., 77225., 80150.,
      77850., 80800., 60130., 62500., 43475., 45260., 51830., 53660., 66950.,
      69400., 80975., 84050., 81600., 84700., 82225., 85350., 82850., 86000.,
      63970., 66500., 46235., 48140., 34480., 35992., 44144., 46168., 52880.,
      55420., 53280., 55840., 53680., 56260., 54080., 56680., 41312., 43400.,
      29512., 31084., 20382., 21552., 25726., 27292., 30335., 32300., 30560.,
      32540., 30785., 32780., 31010., 33020., 23266., 24880., 16287., 17502.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975., 16450., 16600., 17100., 17225., 17750., 17850., 18400.,
      20975., 21650., 21600., 22300., 22225., 22950., 22850., 23600.,
      45975., 47650., 46600., 48300., 47225., 48950., 47850., 49600.,
      50975., 52850., 51600., 53500., 52225., 54150., 52850., 54800.,
      75975., 78850., 76600., 79500., 77225., 80150., 77850., 80800.,
      80975., 84050., 81600., 84700., 82225., 85350., 82850., 86000.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7554.,   7644.,   7734.,   7824.,   10286.,  10412.,  10538.,  10664.,
      13105.,  13270.,  13435.,  13600.,  14140.,  14320.,  14500.,  14680.,
      15175.,  15370.,  15565.,  15760.,  16210.,  16420.,  16630.,  16840.,
      12998.,  13172.,  13346.,  13520.,  9759.,   9894.,   10029.,  10164.,
      13016.,  13184.,  13352.,  13520.,  17432.,  17664.,  17896.,  18128.,
      21860.,  22160.,  22460.,  22760.,  23040.,  23360.,  23680.,  24000.,
      24220.,  24560.,  24900.,  25240.,  25400.,  25760.,  26120.,  26480.,
      20152.,  20448.,  20744.,  21040.,  14972.,  15200.,  15428.,  15656.,
      19150.,  19420.,  19690.,  19960.,  25370.,  25740.,  26110.,  26480.,
      31475.,  31950.,  32425.,  32900.,  32700.,  33200.,  33700.,  34200.,
      33925.,  34450.,  34975.,  35500.,  35150.,  35700.,  36250.,  36800.,
      27650.,  28100.,  28550.,  29000.,  20365.,  20710.,  21055.,  21400.,
      25510.,  25900.,  26290.,  26680.,  33530.,  34060.,  34590.,  35120.,
      41275.,  41950.,  42625.,  43300.,  42500.,  43200.,  43900.,  44600.,
      43725.,  44450.,  45175.,  45900.,  44950.,  45700.,  46450.,  47200.,
      35170.,  35780.,  36390.,  37000.,  25765.,  26230.,  26695.,  27160.,
      17912.,  18272.,  18632.,  18992.,  23288.,  23776.,  24264.,  24752.,
      28340.,  28960.,  29580.,  30200.,  29120.,  29760.,  30400.,  31040.,
      29900.,  30560.,  31220.,  31880.,  30680.,  31360.,  32040.,  32720.,
      23704.,  24256.,  24808.,  25360.,  17132.,  17552.,  17972.,  18392.,
      11082.,  11388.,  11694.,  12000.,  14174.,  14588.,  15002.,  15416.,
      16945.,  17470.,  17995.,  18520.,  17380.,  17920.,  18460.,  19000.,
      17815.,  18370.,  18925.,  19480.,  18250.,  18820.,  19390.,  19960.,
      13814.,  14276.,  14738.,  15200.,  9759.,   10110.,  10461.,  10812.,
      39090.,  39612.,  40134.,  40656.,  51182.,  51884.,  52586.,  53288.,
      62785.,  63670.,  64555.,  65440.,  63820.,  64720.,  65620.,  66520.,
      64855.,  65770.,  66685.,  67600.,  65890.,  66820.,  67750.,  68680.,
      51590.,  52340.,  53090.,  53840.,  37839.,  38406.,  38973.,  39540.,
      49304.,  50048.,  50792.,  51536.,  64280.,  65280.,  66280.,  67280.,
      78500.,  79760.,  81020.,  82280.,  79680.,  80960.,  82240.,  83520.,
      80860.,  82160.,  83460.,  84760.,  82040.,  83360.,  84680.,  86000.,
      63928.,  64992.,  66056.,  67120.,  46652.,  47456.,  48260.,  49064.,
      57310.,  58300.,  59290.,  60280.,  74330.,  75660.,  76990.,  78320.,
      90275.,  91950.,  93625.,  95300.,  91500.,  93200.,  94900.,  96600.,
      92725.,  94450.,  96175.,  97900.,  93950.,  95700.,  97450.,  99200.,
      72770.,  74180.,  75590.,  77000.,  52765.,  53830.,  54895.,  55960.,
      63670.,  64780.,  65890.,  67000.,  82490.,  83980.,  85470.,  86960.,
      100075., 101950., 103825., 105700., 101300., 103200., 105100., 107000.,
      102525., 104450., 106375., 108300., 103750., 105700., 107650., 109600.,
      80290.,  81860.,  83430.,  85000.,  58165.,  59350.,  60535.,  61720.,
      42680.,  43616.,  44552.,  45488.,  54776.,  56032.,  57288.,  58544.,
      65780.,  67360.,  68940.,  70520.,  66560.,  68160.,  69760.,  71360.,
      67340.,  68960.,  70580.,  72200.,  68120.,  69760.,  71400.,  73040.,
      52120.,  53440.,  54760.,  56080.,  37292.,  38288.,  39284.,  40280.,
      25338.,  26076.,  26814.,  27552.,  32030.,  33020.,  34010.,  35000.,
      37825.,  39070.,  40315.,  41560.,  38260.,  39520.,  40780.,  42040.,
      38695.,  39970.,  41245.,  42520.,  39130.,  40420.,  41710.,  43000.,
      29366.,  30404.,  31442.,  32480.,  20559.,  21342.,  22125.,  22908.,
      70626.,  71580.,  72534.,  73488.,  92078.,  93356.,  94634.,  95912.,
      112465., 114070., 115675., 117280., 113500., 115120., 116740., 118360.,
      114535., 116170., 117805., 119440., 115570., 117220., 118870., 120520.,
      90182.,  91508.,  92834.,  94160.,  65919.,  66918.,  67917.,  68916.,
      85592.,  86912.,  88232.,  89552.,  111128., 112896., 114664., 116432.,
      135140., 137360., 139580., 141800., 136320., 138560., 140800., 143040.,
      137500., 139760., 142020., 144280., 138680., 140960., 143240., 145520.,
      107704., 109536., 111368., 113200., 78332.,  79712.,  81092.,  82472.,
      95470.,  97180.,  98890.,  100600., 123290., 125580., 127870., 130160.,
      149075., 151950., 154825., 157700., 150300., 153200., 156100., 159000.,
      151525., 154450., 157375., 160300., 152750., 155700., 158650., 161600.,
      117890., 120260., 122630., 125000., 85165.,  86950.,  88735.,  90520.,
      101830., 103660., 105490., 107320., 131450., 133900., 136350., 138800.,
      158875., 161950., 165025., 168100., 160100., 163200., 166300., 169400.,
      161325., 164450., 167575., 170700., 162550., 165700., 168850., 172000.,
      125410., 127940., 130470., 133000., 90565.,  92470.,  94375.,  96280.,
      67448.,  68960.,  70472.,  71984.,  86264.,  88288.,  90312.,  92336.,
      103220., 105760., 108300., 110840., 104000., 106560., 109120., 111680.,
      104780., 107360., 109940., 112520., 105560., 108160., 110760., 113360.,
      80536.,  82624.,  84712.,  86800.,  57452.,  59024.,  60596.,  62168.,
      39594.,  40764.,  41934.,  43104.,  49886.,  51452.,  53018.,  54584.,
      58705.,  60670.,  62635.,  64600.,  59140.,  61120.,  63100.,  65080.,
      59575.,  61570.,  63565.,  65560.,  60010.,  62020.,  64030.,  66040.,
      44918.,  46532.,  48146.,  49760.,  31359.,  32574.,  33789.,  35004.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475.,  31950.,  32425.,  32900.,  32700.,  33200.,  33700.,  34200.,
      33925.,  34450.,  34975.,  35500.,  35150.,  35700.,  36250.,  36800.,
      41275.,  41950.,  42625.,  43300.,  42500.,  43200.,  43900.,  44600.,
      43725.,  44450.,  45175.,  45900.,  44950.,  45700.,  46450.,  47200.,
      90275.,  91950.,  93625.,  95300.,  91500.,  93200.,  94900.,  96600.,
      92725.,  94450.,  96175.,  97900.,  93950.,  95700.,  97450.,  99200.,
      100075., 101950., 103825., 105700., 101300., 103200., 105100., 107000.,
      102525., 104450., 106375., 108300., 103750., 105700., 107650., 109600.,
      149075., 151950., 154825., 157700., 150300., 153200., 156100., 159000.,
      151525., 154450., 157375., 160300., 152750., 155700., 158650., 161600.,
      158875., 161950., 165025., 168100., 160100., 163200., 166300., 169400.,
      161325., 164450., 167575., 170700., 162550., 165700., 168850., 172000.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15135.,  20644.,  26345.,  28475.,  30605.,  32735.,  26284.,  19761.,
      26320.,  35296.,  44320.,  46760.,  49200.,  51640.,  41024.,  30520.,
      38975.,  51700.,  64225.,  66775.,  69325.,  71875.,  56620.,  41765.,
      52175.,  68660.,  84625.,  87175.,  89725.,  92275.,  72300.,  53045.,
      37000.,  48192.,  58760.,  60400.,  62040.,  63680.,  49312.,  35728.,
      23235.,  29812.,  35765.,  36695.,  37625.,  38555.,  29308.,  20805.,
      79935.,  104740., 128585., 130715., 132845., 134975., 105772., 77649.,
      101200., 132064., 161440., 163880., 166320., 168760., 131648., 96184.,
      118175., 153460., 186625., 189175., 191725., 194275., 150700., 109445.,
      131375., 170420., 207025., 209575., 212125., 214675., 166380., 120725.,
      88840.,  114240., 137480., 139120., 140760., 142400., 109216., 78352.,
      53475.,  67828.,  80405.,  81335.,  82265.,  83195.,  62716.,  44133.,
      144735., 188836., 230825., 232955., 235085., 237215., 185260., 135537.,
      176080., 228832., 278560., 281000., 283440., 285880., 222272., 161848.,
      197375., 255220., 309025., 311575., 314125., 316675., 244780., 177125.,
      210575., 272180., 329425., 331975., 334525., 337075., 260460., 188405.,
      140680., 180288., 216200., 217840., 219480., 221120., 169120., 120976.,
      83715.,  105844., 125045., 125975., 126905., 127835., 96124.,  67461.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      64225.,  66775.,  69325.,  71875.,  84625.,  87175.,  89725.,  92275.,
      186625., 189175., 191725., 194275., 207025., 209575., 212125., 214675.,
      309025., 311575., 314125., 316675., 329425., 331975., 334525., 337075.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29919.,  30270.,  40796.,  41288.,  52045.,  52690.,  56245.,  56950.,
      60445.,  61210.,  64645.,  65470.,  51884.,  52568.,  38991.,  39522.,
      51980.,  52640.,  69680.,  70592.,  87460.,  88640.,  92260.,  93520.,
      97060.,  98400.,  101860., 103280., 80880.,  82048.,  60140.,  61040.,
      76885.,  77950.,  101940., 103400., 126575., 128450., 131575., 133550.,
      136575., 138650., 141575., 143750., 111460., 113240., 82165.,  83530.,
      102805., 104350., 135220., 137320., 166575., 169250., 171575., 174350.,
      176575., 179450., 181575., 184550., 142180., 144600., 104245., 106090.,
      72572.,  74000.,  94448.,  96384.,  115060., 117520., 118260., 120800.,
      121460., 124080., 124660., 127360., 96432.,  98624.,  69788.,  71456.,
      45255.,  46470.,  57980.,  59624.,  69445.,  71530.,  71245.,  73390.,
      73045.,  75250.,  74845.,  77110.,  56780.,  58616.,  40215.,  41610.,
      157791., 159870., 206684., 209480., 253645., 257170., 257845., 261430.,
      262045., 265690., 266245., 269950., 208556., 211544., 153039., 155298.,
      199436., 202400., 260144., 264128., 317860., 322880., 322660., 327760.,
      327460., 332640., 332260., 337520., 259056., 263296., 189164., 192368.,
      232405., 236350., 301620., 306920., 366575., 373250., 371575., 378350.,
      376575., 383450., 381575., 388550., 295780., 301400., 214645., 218890.,
      258325., 262750., 334900., 340840., 406575., 414050., 411575., 419150.,
      416575., 424250., 421575., 429350., 326500., 332760., 236725., 241450.,
      173948., 177680., 223472., 228480., 268660., 274960., 271860., 278240.,
      275060., 281520., 278260., 284800., 213168., 218432., 152732., 156704.,
      104007., 106950., 131708., 135656., 155845., 160810., 157645., 162670.,
      159445., 164530., 161245., 166390., 121292., 125432., 85143.,  88266.,
      285663., 289470., 372572., 377672., 455245., 461650., 459445., 465910.,
      463645., 470170., 467845., 474430., 365228., 370520., 267087., 271074.,
      346892., 352160., 450608., 457664., 548260., 557120., 553060., 562000.,
      557860., 566880., 562660., 571760., 437232., 444544., 318188., 323696.,
      387925., 394750., 501300., 510440., 606575., 618050., 611575., 623150.,
      616575., 628250., 621575., 633350., 480100., 489560., 347125., 354250.,
      413845., 421150., 534580., 544360., 646575., 658850., 651575., 663950.,
      656575., 669050., 661575., 674150., 510820., 520920., 369205., 376810.,
      275324., 281360., 352496., 360576., 422260., 432400., 425460., 435680.,
      428660., 438960., 431860., 442240., 329904., 338240., 235676., 241952.,
      162759., 167430., 205436., 211688., 242245., 250090., 244045., 251950.,
      245845., 253810., 247645., 255670., 185804., 192248., 130071., 134922.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      126575., 128450., 131575., 133550., 136575., 138650., 141575., 143750.,
      166575., 169250., 171575., 174350., 176575., 179450., 181575., 184550.,
      366575., 373250., 371575., 378350., 376575., 383450., 381575., 388550.,
      406575., 414050., 411575., 419150., 416575., 424250., 421575., 429350.,
      606575., 618050., 611575., 623150., 616575., 628250., 621575., 633350.,
      646575., 658850., 651575., 663950., 656575., 669050., 661575., 674150.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      59487.,   59838.,   60189.,   60540.,   81100.,   81592.,   82084.,
      82576.,   103445.,  104090.,  104735.,  105380.,  111785.,  112490.,
      113195.,  113900.,  120125.,  120890.,  121655.,  122420.,  128465.,
      129290.,  130115.,  130940.,  103084.,  103768.,  104452.,  105136.,
      77451.,   77982.,   78513.,   79044.,   103300.,  103960.,  104620.,
      105280.,  138448.,  139360.,  140272.,  141184.,  173740.,  174920.,
      176100.,  177280.,  183260.,  184520.,  185780.,  187040.,  192780.,
      194120.,  195460.,  196800.,  202300.,  203720.,  205140.,  206560.,
      160592.,  161760.,  162928.,  164096.,  119380.,  120280.,  121180.,
      122080.,  152705.,  153770.,  154835.,  155900.,  202420.,  203880.,
      205340.,  206800.,  251275.,  253150.,  255025.,  256900.,  261175.,
      263150.,  265125.,  267100.,  271075.,  273150.,  275225.,  277300.,
      280975.,  283150.,  285325.,  287500.,  221140.,  222920.,  224700.,
      226480.,  162965.,  164330.,  165695.,  167060.,  204065.,  205610.,
      207155.,  208700.,  268340.,  270440.,  272540.,  274640.,  330475.,
      333150.,  335825.,  338500.,  340375.,  343150.,  345925.,  348700.,
      350275.,  353150.,  356025.,  358900.,  360175.,  363150.,  366125.,
      369100.,  281940.,  284360.,  286780.,  289200.,  206645.,  208490.,
      210335.,  212180.,  143716.,  145144.,  146572.,  148000.,  186960.,
      188896.,  190832.,  192768.,  227660.,  230120.,  232580.,  235040.,
      233980.,  236520.,  239060.,  241600.,  240300.,  242920.,  245540.,
      248160.,  246620.,  249320.,  252020.,  254720.,  190672.,  192864.,
      195056.,  197248.,  137908.,  139576.,  141244.,  142912.,  89295.,
      90510.,   91725.,   92940.,   114316.,  115960.,  117604.,  119248.,
      136805.,  138890.,  140975.,  143060.,  140345.,  142490.,  144635.,
      146780.,  143885.,  146090.,  148295.,  150500.,  147425.,  149690.,
      151955.,  154220.,  111724.,  113560.,  115396.,  117232.,  79035.,
      80430.,   81825.,   83220.,   313503.,  315582.,  317661.,  319740.,
      410572.,  413368.,  416164.,  418960.,  503765.,  507290.,  510815.,
      514340.,  512105.,  515690.,  519275.,  522860.,  520445.,  524090.,
      527735.,  531380.,  528785.,  532490.,  536195.,  539900.,  414124.,
      417112.,  420100.,  423088.,  303819.,  306078.,  308337.,  310596.,
      395908.,  398872.,  401836.,  404800.,  516304.,  520288.,  524272.,
      528256.,  630700.,  635720.,  640740.,  645760.,  640220.,  645320.,
      650420.,  655520.,  649740.,  654920.,  660100.,  665280.,  659260.,
      664520.,  669780.,  675040.,  513872.,  518112.,  522352.,  526592.,
      375124.,  378328.,  381532.,  384736.,  460865.,  464810.,  468755.,
      472700.,  597940.,  603240.,  608540.,  613840.,  726475.,  733150.,
      739825.,  746500.,  736375.,  743150.,  749925.,  756700.,  746275.,
      753150.,  760025.,  766900.,  756175.,  763150.,  770125.,  777100.,
      585940.,  591560.,  597180.,  602800.,  425045.,  429290.,  433535.,
      437780.,  512225.,  516650.,  521075.,  525500.,  663860.,  669800.,
      675740.,  681680.,  805675.,  813150.,  820625.,  828100.,  815575.,
      823150.,  830725.,  838300.,  825475.,  833150.,  840825.,  848500.,
      835375.,  843150.,  850925.,  858700.,  646740.,  653000.,  659260.,
      665520.,  468725.,  473450.,  478175.,  482900.,  344164.,  347896.,
      351628.,  355360.,  441936.,  446944.,  451952.,  456960.,  531020.,
      537320.,  543620.,  549920.,  537340.,  543720.,  550100.,  556480.,
      543660.,  550120.,  556580.,  563040.,  549980.,  556520.,  563060.,
      569600.,  421072.,  426336.,  431600.,  436864.,  301492.,  305464.,
      309436.,  313408.,  205071.,  208014.,  210957.,  213900.,  259468.,
      263416.,  267364.,  271312.,  306725.,  311690.,  316655.,  321620.,
      310265.,  315290.,  320315.,  325340.,  313805.,  318890.,  323975.,
      329060.,  317345.,  322490.,  327635.,  332780.,  238444.,  242584.,
      246724.,  250864.,  167163.,  170286.,  173409.,  176532.,  567519.,
      571326.,  575133.,  578940.,  740044.,  745144.,  750244.,  755344.,
      904085.,  910490.,  916895.,  923300.,  912425.,  918890.,  925355.,
      931820.,  920765.,  927290.,  933815.,  940340.,  929105.,  935690.,
      942275.,  948860.,  725164.,  730456.,  735748.,  741040.,  530187.,
      534174.,  538161.,  542148.,  688516.,  693784.,  699052.,  704320.,
      894160.,  901216.,  908272.,  915328.,  1087660., 1096520., 1105380.,
      1114240., 1097180., 1106120., 1115060., 1124000., 1106700., 1115720.,
      1124740., 1133760., 1116220., 1125320., 1134420., 1143520., 867152.,
      874464.,  881776.,  889088.,  630868.,  636376.,  641884.,  647392.,
      769025.,  775850.,  782675.,  789500.,  993460.,  1002600., 1011740.,
      1020880., 1201675., 1213150., 1224625., 1236100., 1211575., 1223150.,
      1234725., 1246300., 1221475., 1233150., 1244825., 1256500., 1231375.,
      1243150., 1254925., 1266700., 950740.,  960200.,  969660.,  979120.,
      687125.,  694250.,  701375.,  708500.,  820385.,  827690.,  834995.,
      842300.,  1059380., 1069160., 1078940., 1088720., 1280875., 1293150.,
      1305425., 1317700., 1290775., 1303150., 1315525., 1327900., 1300675.,
      1313150., 1325625., 1338100., 1310575., 1323150., 1335725., 1348300.,
      1011540., 1021640., 1031740., 1041840., 730805.,  738410.,  746015.,
      753620.,  544612.,  550648.,  556684.,  562720.,  696912.,  704992.,
      713072.,  721152.,  834380.,  844520.,  854660.,  864800.,  840700.,
      850920.,  861140.,  871360.,  847020.,  857320.,  867620.,  877920.,
      853340.,  863720.,  874100.,  884480.,  651472.,  659808.,  668144.,
      676480.,  465076.,  471352.,  477628.,  483904.,  320847.,  325518.,
      330189.,  334860.,  404620.,  410872.,  417124.,  423376.,  476645.,
      484490.,  492335.,  500180.,  480185.,  488090.,  495995.,  503900.,
      483725.,  491690.,  499655.,  507620.,  487265.,  495290.,  503315.,
      511340.,  365164.,  371608.,  378052.,  384496.,  255291.,  260142.,
      264993.,  269844.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      251275.,  253150.,  255025.,  256900.,  261175.,  263150.,  265125.,
      267100.,  271075.,  273150.,  275225.,  277300.,  280975.,  283150.,
      285325.,  287500.,  330475.,  333150.,  335825.,  338500.,  340375.,
      343150.,  345925.,  348700.,  350275.,  353150.,  356025.,  358900.,
      360175.,  363150.,  366125.,  369100.,  726475.,  733150.,  739825.,
      746500.,  736375.,  743150.,  749925.,  756700.,  746275.,  753150.,
      760025.,  766900.,  756175.,  763150.,  770125.,  777100.,  805675.,
      813150.,  820625.,  828100.,  815575.,  823150.,  830725.,  838300.,
      825475.,  833150.,  840825.,  848500.,  835375.,  843150.,  850925.,
      858700.,  1201675., 1213150., 1224625., 1236100., 1211575., 1223150.,
      1234725., 1246300., 1221475., 1233150., 1244825., 1256500., 1231375.,
      1243150., 1254925., 1266700., 1280875., 1293150., 1305425., 1317700.,
      1290775., 1303150., 1315525., 1327900., 1300675., 1313150., 1325625.,
      1338100., 1310575., 1323150., 1335725., 1348300.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      119046.,  162440.,  207370.,  224290.,  241210.,  258130.,  207272.,
      155838.,  207704.,  278560.,  349800.,  369160.,  388520.,  407880.,
      324000.,  241016.,  308050.,  408600.,  507550.,  527750.,  547950.,
      568150.,  447480.,  330010.,  412690.,  543000.,  669150.,  689350.,
      709550.,  729750.,  571640.,  419290.,  292088.,  380320.,  463560.,
      476520.,  489480.,  502440.,  388896.,  281624.,  182838.,  234440.,
      281050.,  288370.,  295690.,  303010.,  230120.,  163182.,  633990.,
      830600.,  1019530., 1036450., 1053370., 1070290., 838568.,  615486.,
      802136.,  1046560., 1279080., 1298440., 1317800., 1337160., 1042848.,
      761720.,  935890.,  1215000., 1477150., 1497350., 1517550., 1537750.,
      1192440., 865690.,  1040530., 1349400., 1638750., 1658950., 1679150.,
      1699350., 1316600., 954970.,  702200.,  902560.,  1085640., 1098600.,
      1111560., 1124520., 861984.,  618008.,  421302.,  533960.,  632410.,
      639730.,  647050.,  654370.,  492776.,  346350.,  1148934., 1498760.,
      1831690., 1848610., 1865530., 1882450., 1469864., 1075134., 1396568.,
      1814560., 2208360., 2227720., 2247080., 2266440., 1761696., 1282424.,
      1563730., 2021400., 2446750., 2466950., 2487150., 2507350., 1937400.,
      1401370., 1668370., 2155800., 2608350., 2628550., 2648750., 2668950.,
      2061560., 1490650., 1112312., 1424800., 1707720., 1720680., 1733640.,
      1746600., 1335072., 954392.,  659766.,  833480.,  983770.,  991090.,
      998410.,  1005730., 755432.,  529518.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      507550.,  527750.,  547950.,  568150.,  669150.,  689350.,
      709550.,  729750.,  1477150., 1497350., 1517550., 1537750.,
      1638750., 1658950., 1679150., 1699350., 2446750., 2466950.,
      2487150., 2507350., 2608350., 2628550., 2648750., 2668950.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      236706.,  238092.,  322936.,  324880.,  412190.,  414740.,  445790.,
      448580.,  479390.,  482420.,  512990.,  516260.,  411832.,  414544.,
      309570.,  311676.,  412792.,  415408.,  553504.,  557120.,  694920.,
      699600.,  733320.,  738320.,  771720.,  777040.,  810120.,  815760.,
      643360.,  648000.,  478456.,  482032.,  611870.,  616100.,  811400.,
      817200.,  1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 887880.,  894960.,  654590.,  660020.,  819230.,
      825380.,  1077640., 1086000., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500., 1133640., 1143280., 831230.,
      838580.,  578488.,  584176.,  752928.,  760640.,  917320.,  927120.,
      942920.,  953040.,  968520.,  978960.,  994120.,  1004880., 769056.,
      777792.,  556600.,  563248.,  360834.,  365676.,  462328.,  468880.,
      553790.,  562100.,  568190.,  576740.,  582590.,  591380.,  596990.,
      606020.,  452920.,  460240.,  320802.,  326364.,  1259682., 1267980.,
      1650040., 1661200., 2024990., 2039060., 2058590., 2072900., 2092190.,
      2106740., 2125790., 2140580., 1665208., 1677136., 1221954., 1230972.,
      1592440., 1604272., 2077216., 2093120., 2538120., 2558160., 2576520.,
      2596880., 2614920., 2635600., 2653320., 2674320., 2068768., 2085696.,
      1510648., 1523440., 1856030., 1871780., 2408840., 2430000., 2927650.,
      2954300., 2967650., 2994700., 3007650., 3035100., 3047650., 3075500.,
      2362440., 2384880., 1714430., 1731380., 2063390., 2081060., 2675080.,
      2698800., 3247650., 3277500., 3287650., 3317900., 3327650., 3358300.,
      3367650., 3398700., 2608200., 2633200., 1891070., 1909940., 1389496.,
      1404400., 1785120., 1805120., 2146120., 2171280., 2171720., 2197200.,
      2197320., 2223120., 2222920., 2249040., 1702944., 1723968., 1220152.,
      1236016., 830850.,  842604.,  1052152., 1067920., 1244990., 1264820.,
      1259390., 1279460., 1273790., 1294100., 1288190., 1308740., 969016.,
      985552.,  680226.,  692700.,  2282658., 2297868., 2977144., 2997520.,
      3637790., 3663380., 3671390., 3697220., 3704990., 3731060., 3738590.,
      3764900., 2918584., 2939728., 2134338., 2150268., 2772088., 2793136.,
      3600928., 3629120., 4381320., 4416720., 4419720., 4455440., 4458120.,
      4494160., 4496520., 4532880., 3494176., 3523392., 2542840., 2564848.,
      3100190., 3127460., 4006280., 4042800., 4847650., 4893500., 4887650.,
      4933900., 4927650., 4974300., 4967650., 5014700., 3837000., 3874800.,
      2774270., 2802740., 3307550., 3336740., 4272520., 4311600., 5167650.,
      5216700., 5207650., 5257100., 5247650., 5297500., 5287650., 5337900.,
      4082760., 4123120., 2950910., 2981300., 2200504., 2224624., 2817312.,
      2849600., 3374920., 3415440., 3400520., 3441360., 3426120., 3467280.,
      3451720., 3493200., 2636832., 2670144., 1883704., 1908784., 1300866.,
      1319532., 1641976., 1666960., 1936190., 1967540., 1950590., 1982180.,
      1964990., 1996820., 1979390., 2011460., 1485112., 1510864., 1039650.,
      1059036.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1007650., 1015100., 1047650., 1055500., 1087650., 1095900., 1127650.,
      1136300., 1327650., 1338300., 1367650., 1378700., 1407650., 1419100.,
      1447650., 1459500., 2927650., 2954300., 2967650., 2994700., 3007650.,
      3035100., 3047650., 3075500., 3247650., 3277500., 3287650., 3317900.,
      3327650., 3358300., 3367650., 3398700., 4847650., 4893500., 4887650.,
      4933900., 4927650., 4974300., 4967650., 5014700., 5167650., 5216700.,
      5207650., 5257100., 5247650., 5297500., 5287650., 5337900.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      472026.,   473412.,   474798.,   476184.,   643928.,   645872.,
      647816.,   649760.,   821830.,   824380.,   826930.,   829480.,
      888790.,   891580.,   894370.,   897160.,   955750.,   958780.,
      961810.,   964840.,   1022710.,  1025980.,  1029250.,  1032520.,
      820952.,   823664.,   826376.,   829088.,   617034.,   619140.,
      621246.,   623352.,   822968.,   825584.,   828200.,   830816.,
      1103392.,  1107008.,  1110624.,  1114240.,  1385160.,  1389840.,
      1394520.,  1399200.,  1461640.,  1466640.,  1471640.,  1476640.,
      1538120.,  1543440.,  1548760.,  1554080.,  1614600.,  1620240.,
      1625880.,  1631520.,  1282080.,  1286720.,  1291360.,  1296000.,
      953336.,   956912.,   960488.,   964064.,   1219510.,  1223740.,
      1227970.,  1232200.,  1617000.,  1622800.,  1628600.,  1634400.,
      2007850.,  2015300.,  2022750.,  2030200.,  2087450.,  2095300.,
      2103150.,  2111000.,  2167050.,  2175300.,  2183550.,  2191800.,
      2246650.,  2255300.,  2263950.,  2272600.,  1768680.,  1775760.,
      1782840.,  1789920.,  1303750.,  1309180.,  1314610.,  1320040.,
      1632310.,  1638460.,  1644610.,  1650760.,  2146920.,  2155280.,
      2163640.,  2172000.,  2644650.,  2655300.,  2665950.,  2676600.,
      2724250.,  2735300.,  2746350.,  2757400.,  2803850.,  2815300.,
      2826750.,  2838200.,  2883450.,  2895300.,  2907150.,  2919000.,
      2257640.,  2267280.,  2276920.,  2286560.,  1655110.,  1662460.,
      1669810.,  1677160.,  1151288.,  1156976.,  1162664.,  1168352.,
      1498144.,  1505856.,  1513568.,  1521280.,  1824840.,  1834640.,
      1844440.,  1854240.,  1875720.,  1885840.,  1895960.,  1906080.,
      1926600.,  1937040.,  1947480.,  1957920.,  1977480.,  1988240.,
      1999000.,  2009760.,  1529376.,  1538112.,  1546848.,  1555584.,
      1106552.,  1113200.,  1119848.,  1126496.,  716826.,   721668.,
      726510.,   731352.,   918104.,   924656.,   931208.,   937760.,
      1099270.,  1107580.,  1115890.,  1124200.,  1127830.,  1136380.,
      1144930.,  1153480.,  1156390.,  1165180.,  1173970.,  1182760.,
      1184950.,  1193980.,  1203010.,  1212040.,  898520.,   905840.,
      913160.,   920480.,   636042.,   641604.,   647166.,   652728.,
      2511066.,  2519364.,  2527662.,  2535960.,  3288920.,  3300080.,
      3311240.,  3322400.,  4035910.,  4049980.,  4064050.,  4078120.,
      4102870.,  4117180.,  4131490.,  4145800.,  4169830.,  4184380.,
      4198930.,  4213480.,  4236790.,  4251580.,  4266370.,  4281160.,
      3318488.,  3330416.,  3342344.,  3354272.,  2434890.,  2443908.,
      2452926.,  2461944.,  3173048.,  3184880.,  3196712.,  3208544.,
      4138528.,  4154432.,  4170336.,  4186240.,  5056200.,  5076240.,
      5096280.,  5116320.,  5132680.,  5153040.,  5173400.,  5193760.,
      5209160.,  5229840.,  5250520.,  5271200.,  5285640.,  5306640.,
      5327640.,  5348640.,  4120608.,  4137536.,  4154464.,  4171392.,
      3008504.,  3021296.,  3034088.,  3046880.,  3696310.,  3712060.,
      3727810.,  3743560.,  4796520.,  4817680.,  4838840.,  4860000.,
      5828650.,  5855300.,  5881950.,  5908600.,  5908250.,  5935300.,
      5962350.,  5989400.,  5987850.,  6015300.,  6042750.,  6070200.,
      6067450.,  6095300.,  6123150.,  6151000.,  4702440.,  4724880.,
      4747320.,  4769760.,  3411910.,  3428860.,  3445810.,  3462760.,
      4109110.,  4126780.,  4144450.,  4162120.,  5326440.,  5350160.,
      5373880.,  5397600.,  6465450.,  6495300.,  6525150.,  6555000.,
      6545050.,  6575300.,  6605550.,  6635800.,  6624650.,  6655300.,
      6685950.,  6716600.,  6704250.,  6735300.,  6766350.,  6797400.,
      5191400.,  5216400.,  5241400.,  5266400.,  3763270.,  3782140.,
      3801010.,  3819880.,  2764088.,  2778992.,  2793896.,  2808800.,
      3550240.,  3570240.,  3590240.,  3610240.,  4267080.,  4292240.,
      4317400.,  4342560.,  4317960.,  4343440.,  4368920.,  4394400.,
      4368840.,  4394640.,  4420440.,  4446240.,  4419720.,  4445840.,
      4471960.,  4498080.,  3384864.,  3405888.,  3426912.,  3447936.,
      2424440.,  2440304.,  2456168.,  2472032.,  1649946.,  1661700.,
      1673454.,  1685208.,  2088536.,  2104304.,  2120072.,  2135840.,
      2470150.,  2489980.,  2509810.,  2529640.,  2498710.,  2518780.,
      2538850.,  2558920.,  2527270.,  2547580.,  2567890.,  2588200.,
      2555830.,  2576380.,  2596930.,  2617480.,  1921496.,  1938032.,
      1954568.,  1971104.,  1347978.,  1360452.,  1372926.,  1385400.,
      4550106.,  4565316.,  4580526.,  4595736.,  5933912.,  5954288.,
      5974664.,  5995040.,  7249990.,  7275580.,  7301170.,  7326760.,
      7316950.,  7342780.,  7368610.,  7394440.,  7383910.,  7409980.,
      7436050.,  7462120.,  7450870.,  7477180.,  7503490.,  7529800.,
      5816024.,  5837168.,  5858312.,  5879456.,  4252746.,  4268676.,
      4284606.,  4300536.,  5523128.,  5544176.,  5565224.,  5586272.,
      7173664.,  7201856.,  7230048.,  7258240.,  8727240.,  8762640.,
      8798040.,  8833440.,  8803720.,  8839440.,  8875160.,  8910880.,
      8880200.,  8916240.,  8952280.,  8988320.,  8956680.,  8993040.,
      9029400.,  9065760.,  6959136.,  6988352.,  7017568.,  7046784.,
      5063672.,  5085680.,  5107688.,  5129696.,  6173110.,  6200380.,
      6227650.,  6254920.,  7976040.,  8012560.,  8049080.,  8085600.,
      9649450.,  9695300.,  9741150.,  9787000.,  9729050.,  9775300.,
      9821550.,  9867800.,  9808650.,  9855300.,  9901950.,  9948600.,
      9888250.,  9935300.,  9982350.,  10029400., 7636200.,  7674000.,
      7711800.,  7749600.,  5520070.,  5548540.,  5577010.,  5605480.,
      6585910.,  6615100.,  6644290.,  6673480.,  8505960.,  8545040.,
      8584120.,  8623200.,  10286250., 10335300., 10384350., 10433400.,
      10365850., 10415300., 10464750., 10514200., 10445450., 10495300.,
      10545150., 10595000., 10525050., 10575300., 10625550., 10675800.,
      8125160.,  8165520.,  8205880.,  8246240.,  5871430.,  5901820.,
      5932210.,  5962600.,  4376888.,  4401008.,  4425128.,  4449248.,
      5602336.,  5634624.,  5666912.,  5699200.,  6709320.,  6749840.,
      6790360.,  6830880.,  6760200.,  6801040.,  6841880.,  6882720.,
      6811080.,  6852240.,  6893400.,  6934560.,  6861960.,  6903440.,
      6944920.,  6986400.,  5240352.,  5273664.,  5306976.,  5340288.,
      3742328.,  3767408.,  3792488.,  3817568.,  2583066.,  2601732.,
      2620398.,  2639064.,  3258968.,  3283952.,  3308936.,  3333920.,
      3841030.,  3872380.,  3903730.,  3935080.,  3869590.,  3901180.,
      3932770.,  3964360.,  3898150.,  3929980.,  3961810.,  3993640.,
      3926710.,  3958780.,  3990850.,  4022920.,  2944472.,  2970224.,
      2995976.,  3021728.,  2059914.,  2079300.,  2098686.,  2118072.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2007850.,  2015300.,  2022750.,  2030200.,  2087450.,  2095300.,
      2103150.,  2111000.,  2167050.,  2175300.,  2183550.,  2191800.,
      2246650.,  2255300.,  2263950.,  2272600.,  2644650.,  2655300.,
      2665950.,  2676600.,  2724250.,  2735300.,  2746350.,  2757400.,
      2803850.,  2815300.,  2826750.,  2838200.,  2883450.,  2895300.,
      2907150.,  2919000.,  5828650.,  5855300.,  5881950.,  5908600.,
      5908250.,  5935300.,  5962350.,  5989400.,  5987850.,  6015300.,
      6042750.,  6070200.,  6067450.,  6095300.,  6123150.,  6151000.,
      6465450.,  6495300.,  6525150.,  6555000.,  6545050.,  6575300.,
      6605550.,  6635800.,  6624650.,  6655300.,  6685950.,  6716600.,
      6704250.,  6735300.,  6766350.,  6797400.,  9649450.,  9695300.,
      9741150.,  9787000.,  9729050.,  9775300.,  9821550.,  9867800.,
      9808650.,  9855300.,  9901950.,  9948600.,  9888250.,  9935300.,
      9982350.,  10029400., 10286250., 10335300., 10384350., 10433400.,
      10365850., 10415300., 10464750., 10514200., 10445450., 10495300.,
      10545150., 10595000., 10525050., 10575300., 10625550., 10675800.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1554.,  2142.,  2760.,  3030.,  2460.,  1869.,  2636.,  3564.,  4510.,
      4820.,  3860.,  2894.,  3850.,  5140.,  6425.,  6750.,  5350.,  3970.,
      5110.,  6760.,  8375.,  8700.,  6850.,  5050.,  6370.,  8380.,  10325.,
      10650., 8350.,  6130.,  4460.,  5812.,  7090.,  7300.,  5660.,  4106.,
      2778.,  3570.,  4290.,  4410.,  3360.,  2391.,  8736.,  11466., 14100.,
      14370., 11280., 8295.,  10952., 14316., 17530., 17840., 13940., 10202.,
      12670., 16480., 20075., 20400., 15850., 11530., 13930., 18100., 22025.,
      22350., 17350., 12610., 15190., 19720., 23975., 24300., 18850., 13690.,
      10256., 13204., 15910., 16120., 12380., 8894.,  6180.,  7854.,  9330.,
      9450.,  7140.,  5037.,  15918., 20790., 25440., 25710., 20100., 14721.,
      19268., 25068., 30550., 30860., 24020., 17510., 21490., 27820., 33725.,
      34050., 26350., 19090., 22750., 29440., 35675., 36000., 27850., 20170.,
      24010., 31060., 37625., 37950., 29350., 21250., 16052., 20596., 24730.,
      24940., 19100., 13682., 9582.,  12138., 14370., 14490., 10920., 7683.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6425.,  6750.,  8375.,  8700.,  10325., 10650., 20075., 20400., 22025.,
      22350., 23975., 24300., 33725., 34050., 35675., 36000., 37625., 37950.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3036.,  3108.,  4182.,  4284.,  5385.,  5520.,  5910.,  6060.,  4794.,
      4920.,  3639.,  3738.,  5140.,  5272.,  6944.,  7128.,  8780.,  9020.,
      9380.,  9640.,  7504.,  7720.,  5620.,  5788.,  7490.,  7700.,  9990.,
      10280., 12475., 12850., 13100., 13500., 10370., 10700., 7685.,  7940.,
      9920.,  10220., 13110., 13520., 16225., 16750., 16850., 17400., 13250.,
      13700., 9755.,  10100., 12350., 12740., 16230., 16760., 19975., 20650.,
      20600., 21300., 16130., 16700., 11825., 12260., 8572.,  8920.,  11152.,
      11624., 13580., 14180., 13980., 14600., 10816., 11320., 7828.,  8212.,
      5268.,  5556.,  6750.,  7140.,  8085.,  8580.,  8310.,  8820.,  6306.,
      6720.,  4467.,  4782.,  17022., 17472., 22326., 22932., 27435., 28200.,
      27960., 28740., 21930., 22560., 16113., 16590., 21268., 21904., 27776.,
      28632., 33980., 35060., 34580., 35680., 26992., 27880., 19732., 20404.,
      24500., 25340., 31830., 32960., 38725., 40150., 39350., 40800., 30530.,
      31700., 22175., 23060., 26930., 27860., 34950., 36200., 42475., 44050.,
      43100., 44700., 33410., 34700., 24245., 25220., 29360., 30380., 38070.,
      39440., 46225., 47950., 46850., 48600., 36290., 37700., 26315., 27380.,
      19660., 20512., 25264., 26408., 30380., 31820., 30780., 32240., 23584.,
      24760., 16900., 17788., 11694., 12360., 14814., 15708., 17535., 18660.,
      17760., 18900., 13362., 14280., 9381.,  10074., 31008., 31836., 40470.,
      41580., 49485., 50880., 50010., 51420., 39066., 40200., 28587., 29442.,
      37396., 38536., 48608., 50136., 59180., 61100., 59780., 61720., 46480.,
      48040., 33844., 35020., 41510., 42980., 53670., 55640., 64975., 67450.,
      65600., 68100., 50690., 52700., 36665., 38180., 43940., 45500., 56790.,
      58880., 68725., 71350., 69350., 72000., 53570., 55700., 38735., 40340.,
      46370., 48020., 59910., 62120., 72475., 75250., 73100., 75900., 56450.,
      58700., 40805., 42500., 30748., 32104., 39376., 41192., 47180., 49460.,
      47580., 49880., 36352., 38200., 25972., 27364., 18120., 19164., 22878.,
      24276., 26985., 28740., 27210., 28980., 20418., 21840., 14295., 15366.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12475., 12850., 13100., 13500., 16225., 16750., 16850., 17400., 19975.,
      20650., 20600., 21300., 38725., 40150., 39350., 40800., 42475., 44050.,
      43100., 44700., 46225., 47950., 46850., 48600., 64975., 67450., 65600.,
      68100., 68725., 71350., 69350., 72000., 72475., 75250., 73100., 75900.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6000.,   6072.,   6144.,   6216.,   8262.,   8364.,   8466.,   8568.,
      10635.,  10770.,  10905.,  11040.,  11670.,  11820.,  11970.,  12120.,
      9462.,   9588.,   9714.,   9840.,   7179.,   7278.,   7377.,   7476.,
      10148.,  10280.,  10412.,  10544.,  13704.,  13888.,  14072.,  14256.,
      17320.,  17560.,  17800.,  18040.,  18500.,  18760.,  19020.,  19280.,
      14792.,  15008.,  15224.,  15440.,  11072.,  11240.,  11408.,  11576.,
      14770.,  14980.,  15190.,  15400.,  19690.,  19980.,  20270.,  20560.,
      24575.,  24950.,  25325.,  25700.,  25800.,  26200.,  26600.,  27000.,
      20410.,  20740.,  21070.,  21400.,  15115.,  15370.,  15625.,  15880.,
      19540.,  19840.,  20140.,  20440.,  25810.,  26220.,  26630.,  27040.,
      31925.,  32450.,  32975.,  33500.,  33150.,  33700.,  34250.,  34800.,
      26050.,  26500.,  26950.,  27400.,  19165.,  19510.,  19855.,  20200.,
      24310.,  24700.,  25090.,  25480.,  31930.,  32460.,  32990.,  33520.,
      39275.,  39950.,  40625.,  41300.,  40500.,  41200.,  41900.,  42600.,
      31690.,  32260.,  32830.,  33400.,  23215.,  23650.,  24085.,  24520.,
      16796.,  17144.,  17492.,  17840.,  21832.,  22304.,  22776.,  23248.,
      26560.,  27160.,  27760.,  28360.,  27340.,  27960.,  28580.,  29200.,
      21128.,  21632.,  22136.,  22640.,  15272.,  15656.,  16040.,  16424.,
      10248.,  10536.,  10824.,  11112.,  13110.,  13500.,  13890.,  14280.,
      15675.,  16170.,  16665.,  17160.,  16110.,  16620.,  17130.,  17640.,
      12198.,  12612.,  13026.,  13440.,  8619.,   8934.,   9249.,   9564.,
      33594.,  34044.,  34494.,  34944.,  44046.,  44652.,  45258.,  45864.,
      54105.,  54870.,  55635.,  56400.,  55140.,  55920.,  56700.,  57480.,
      43230.,  43860.,  44490.,  45120.,  31749.,  32226.,  32703.,  33180.,
      41900.,  42536.,  43172.,  43808.,  54696.,  55552.,  56408.,  57264.,
      66880.,  67960.,  69040.,  70120.,  68060.,  69160.,  70260.,  71360.,
      53096.,  53984.,  54872.,  55760.,  38792.,  39464.,  40136.,  40808.,
      48160.,  49000.,  49840.,  50680.,  62530.,  63660.,  64790.,  65920.,
      76025.,  77450.,  78875.,  80300.,  77250.,  78700.,  80150.,  81600.,
      59890.,  61060.,  62230.,  63400.,  43465.,  44350.,  45235.,  46120.,
      52930.,  53860.,  54790.,  55720.,  68650.,  69900.,  71150.,  72400.,
      83375.,  84950.,  86525.,  88100.,  84600.,  86200.,  87800.,  89400.,
      65530.,  66820.,  68110.,  69400.,  47515.,  48490.,  49465.,  50440.,
      57700.,  58720.,  59740.,  60760.,  74770.,  76140.,  77510.,  78880.,
      90725.,  92450.,  94175.,  95900.,  91950.,  93700.,  95450.,  97200.,
      71170.,  72580.,  73990.,  75400.,  51565.,  52630.,  53695.,  54760.,
      38468.,  39320.,  40172.,  41024.,  49384.,  50528.,  51672.,  52816.,
      59320.,  60760.,  62200.,  63640.,  60100.,  61560.,  63020.,  64480.,
      45992.,  47168.,  48344.,  49520.,  32912.,  33800.,  34688.,  35576.,
      22722.,  23388.,  24054.,  24720.,  28734.,  29628.,  30522.,  31416.,
      33945.,  35070.,  36195.,  37320.,  34380.,  35520.,  36660.,  37800.,
      25806.,  26724.,  27642.,  28560.,  18069.,  18762.,  19455.,  20148.,
      61188.,  62016.,  62844.,  63672.,  79830.,  80940.,  82050.,  83160.,
      97575.,  98970.,  100365., 101760., 98610.,  100020., 101430., 102840.,
      76998.,  78132.,  79266.,  80400.,  56319.,  57174.,  58029.,  58884.,
      73652.,  74792.,  75932.,  77072.,  95688.,  97216.,  98744.,  100272.,
      116440., 118360., 120280., 122200., 117620., 119560., 121500., 123440.,
      91400.,  92960.,  94520.,  96080.,  66512.,  67688.,  68864.,  70040.,
      81550.,  83020.,  84490.,  85960.,  105370., 107340., 109310., 111280.,
      127475., 129950., 132425., 134900., 128700., 131200., 133700., 136200.,
      99370.,  101380., 103390., 105400., 71815.,  73330.,  74845.,  76360.,
      86320.,  87880.,  89440.,  91000.,  111490., 113580., 115670., 117760.,
      134825., 137450., 140075., 142700., 136050., 138700., 141350., 144000.,
      105010., 107140., 109270., 111400., 75865.,  77470.,  79075.,  80680.,
      91090.,  92740.,  94390.,  96040.,  117610., 119820., 122030., 124240.,
      142175., 144950., 147725., 150500., 143400., 146200., 149000., 151800.,
      110650., 112900., 115150., 117400., 79915.,  81610.,  83305.,  85000.,
      60140.,  61496.,  62852.,  64208.,  76936.,  78752.,  80568.,  82384.,
      92080.,  94360.,  96640.,  98920.,  92860.,  95160.,  97460.,  99760.,
      70856.,  72704.,  74552.,  76400.,  50552.,  51944.,  53336.,  54728.,
      35196.,  36240.,  37284.,  38328.,  44358.,  45756.,  47154.,  48552.,
      52215.,  53970.,  55725.,  57480.,  52650.,  54420.,  56190.,  57960.,
      39414.,  40836.,  42258.,  43680.,  27519.,  28590.,  29661.,  30732.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24575.,  24950.,  25325.,  25700.,  25800.,  26200.,  26600.,  27000.,
      31925.,  32450.,  32975.,  33500.,  33150.,  33700.,  34250.,  34800.,
      39275.,  39950.,  40625.,  41300.,  40500.,  41200.,  41900.,  42600.,
      76025.,  77450.,  78875.,  80300.,  77250.,  78700.,  80150.,  81600.,
      83375.,  84950.,  86525.,  88100.,  84600.,  86200.,  87800.,  89400.,
      90725.,  92450.,  94175.,  95900.,  91950.,  93700.,  95450.,  97200.,
      127475., 129950., 132425., 134900., 128700., 131200., 133700., 136200.,
      134825., 137450., 140075., 142700., 136050., 138700., 141350., 144000.,
      142175., 144950., 147725., 150500., 143400., 146200., 149000., 151800.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11955.,  16500.,  21285.,  23415.,  19020.,  14457.,  20440.,  27648.,
      35000.,  37440.,  29984.,  22480.,  29975.,  40020.,  50025.,  52575.,
      41660.,  30905.,  39875.,  52740.,  65325.,  67875.,  53420.,  39365.,
      49775.,  65460.,  80625.,  83175.,  65180.,  47825.,  34720.,  45216.,
      55120.,  56760.,  43968.,  31864.,  21495.,  27588.,  33105.,  34035.,
      25884.,  18381.,  68655.,  90084.,  110745., 112875., 88572.,  65109.,
      85960.,  112320., 137480., 139920., 109280., 79936.,  99275.,  129060.,
      157125., 159675., 123980., 90125.,  109175., 141780., 172425., 174975.,
      135740., 98585.,  119075., 154500., 187725., 190275., 147500., 107045.,
      80080.,  103008., 124000., 125640., 96384.,  69160.,  47955.,  60852.,
      72165.,  73095.,  55116.,  38793.,  125355., 163668., 200205., 202335.,
      158124., 115761., 151480., 196992., 239960., 242400., 188576., 137392.,
      168575., 218100., 264225., 266775., 206300., 149345., 178475., 230820.,
      279525., 282075., 218060., 157805., 188375., 243540., 294825., 297375.,
      229820., 166265., 125440., 160800., 192880., 194520., 148800., 106456.,
      74415.,  94116.,  111225., 112155., 84348.,  59205.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      50025.,  52575.,  65325.,  67875.,  80625.,  83175.,
      157125., 159675., 172425., 174975., 187725., 190275.,
      264225., 266775., 279525., 282075., 294825., 297375.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23631.,  23910.,  32604.,  33000.,  42045.,  42570.,  46245.,  46830.,
      37548.,  38040.,  28527.,  28914.,  40364.,  40880.,  54576.,  55296.,
      69060.,  70000.,  73860.,  74880.,  59120.,  59968.,  44300.,  44960.,
      59125.,  59950.,  78900.,  80040.,  98575.,  100050., 103575., 105150.,
      82020.,  83320.,  60805.,  61810.,  78565.,  79750.,  103860., 105480.,
      128575., 130650., 133575., 135750., 105060., 106840., 77365.,  78730.,
      98005.,  99550.,  128820., 130920., 158575., 161250., 163575., 166350.,
      128100., 130360., 93925.,  95650.,  68060.,  69440.,  88560.,  90432.,
      107860., 110240., 111060., 113520., 85936.,  87936.,  62204.,  63728.,
      41847.,  42990.,  53628.,  55176.,  64245.,  66210.,  66045.,  68070.,
      50124.,  51768.,  35511.,  36762.,  135519., 137310., 177756., 180168.,
      218445., 221490., 222645., 225750., 174636., 177144., 128319., 130218.,
      169388., 171920., 221232., 224640., 270660., 274960., 275460., 279840.,
      215024., 218560., 157196., 159872., 195205., 198550., 253620., 258120.,
      308575., 314250., 313575., 319350., 243300., 247960., 176725., 180250.,
      214645., 218350., 278580., 283560., 338575., 344850., 343575., 349950.,
      266340., 271480., 193285., 197170., 234085., 238150., 303540., 309000.,
      368575., 375450., 373575., 380550., 289380., 295000., 209845., 214090.,
      156764., 160160., 201456., 206016., 242260., 248000., 245460., 251280.,
      188080., 192768., 134780., 138320., 93255.,  95910.,  118140., 121704.,
      139845., 144330., 141645., 146190., 106572., 110232., 74823.,  77586.,
      247407., 250710., 322908., 327336., 394845., 400410., 399045., 404670.,
      311724., 316248., 228111., 231522., 298412., 302960., 387888., 393984.,
      472260., 479920., 477060., 484800., 370928., 377152., 270092., 274784.,
      331285., 337150., 428340., 436200., 518575., 528450., 523575., 533550.,
      404580., 412600., 292645., 298690., 350725., 356950., 453300., 461640.,
      548575., 559050., 553575., 564150., 427620., 436120., 309205., 315610.,
      370165., 376750., 478260., 487080., 578575., 589650., 583575., 594750.,
      450660., 459640., 325765., 332530., 245468., 250880., 314352., 321600.,
      376660., 385760., 379860., 389040., 290224., 297600., 207356., 212912.,
      144663., 148830., 182652., 188232., 215445., 222450., 217245., 224310.,
      163020., 168696., 114135., 118410.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      98575.,  100050., 103575., 105150., 128575., 130650., 133575., 135750.,
      158575., 161250., 163575., 166350., 308575., 314250., 313575., 319350.,
      338575., 344850., 343575., 349950., 368575., 375450., 373575., 380550.,
      518575., 528450., 523575., 533550., 548575., 559050., 553575., 564150.,
      578575., 589650., 583575., 594750.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46983.,   47262.,   47541.,   47820.,   64812.,   65208.,   65604.,
      66000.,   83565.,   84090.,   84615.,   85140.,   91905.,   92490.,
      93075.,   93660.,   74604.,   75096.,   75588.,   76080.,   56667.,
      57054.,   57441.,   57828.,   80212.,   80728.,   81244.,   81760.,
      108432.,  109152.,  109872.,  110592.,  137180.,  138120.,  139060.,
      140000.,  146700.,  147720.,  148740.,  149760.,  117392.,  118240.,
      119088.,  119936.,  87940.,   88600.,   89260.,   89920.,   117425.,
      118250.,  119075.,  119900.,  156660.,  157800.,  158940.,  160080.,
      195675.,  197150.,  198625.,  200100.,  205575.,  207150.,  208725.,
      210300.,  162740.,  164040.,  165340.,  166640.,  120605.,  121610.,
      122615.,  123620.,  155945.,  157130.,  158315.,  159500.,  206100.,
      207720.,  209340.,  210960.,  255075.,  257150.,  259225.,  261300.,
      264975.,  267150.,  269325.,  271500.,  208340.,  210120.,  211900.,
      213680.,  153365.,  154730.,  156095.,  157460.,  194465.,  196010.,
      197555.,  199100.,  255540.,  257640.,  259740.,  261840.,  314475.,
      317150.,  319825.,  322500.,  324375.,  327150.,  329925.,  332700.,
      253940.,  256200.,  258460.,  260720.,  186125.,  187850.,  189575.,
      191300.,  134740.,  136120.,  137500.,  138880.,  175248.,  177120.,
      178992.,  180864.,  213340.,  215720.,  218100.,  220480.,  219660.,
      222120.,  224580.,  227040.,  169872.,  171872.,  173872.,  175872.,
      122884.,  124408.,  125932.,  127456.,  82551.,   83694.,   84837.,
      85980.,   105708.,  107256.,  108804.,  110352.,  126525.,  128490.,
      130455.,  132420.,  130065.,  132090.,  134115.,  136140.,  98604.,
      100248.,  101892.,  103536.,  69771.,   71022.,   72273.,   73524.,
      269247.,  271038.,  272829.,  274620.,  353100.,  355512.,  357924.,
      360336.,  433845.,  436890.,  439935.,  442980.,  442185.,  445290.,
      448395.,  451500.,  346764.,  349272.,  351780.,  354288.,  254739.,
      256638.,  258537.,  260436.,  336244.,  338776.,  341308.,  343840.,
      439056.,  442464.,  445872.,  449280.,  537020.,  541320.,  545620.,
      549920.,  546540.,  550920.,  555300.,  559680.,  426512.,  430048.,
      433584.,  437120.,  311716.,  314392.,  317068.,  319744.,  387065.,
      390410.,  393755.,  397100.,  502740.,  507240.,  511740.,  516240.,
      611475.,  617150.,  622825.,  628500.,  621375.,  627150.,  632925.,
      638700.,  481940.,  486600.,  491260.,  495920.,  349925.,  353450.,
      356975.,  360500.,  425585.,  429290.,  432995.,  436700.,  552180.,
      557160.,  562140.,  567120.,  670875.,  677150.,  683425.,  689700.,
      680775.,  687150.,  693525.,  699900.,  527540.,  532680.,  537820.,
      542960.,  382685.,  386570.,  390455.,  394340.,  464105.,  468170.,
      472235.,  476300.,  601620.,  607080.,  612540.,  618000.,  730275.,
      737150.,  744025.,  750900.,  740175.,  747150.,  754125.,  761100.,
      573140.,  578760.,  584380.,  590000.,  415445.,  419690.,  423935.,
      428180.,  310132.,  313528.,  316924.,  320320.,  398352.,  402912.,
      407472.,  412032.,  478780.,  484520.,  490260.,  496000.,  485100.,
      490920.,  496740.,  502560.,  371472.,  376160.,  380848.,  385536.,
      266020.,  269560.,  273100.,  276640.,  183855.,  186510.,  189165.,
      191820.,  232716.,  236280.,  239844.,  243408.,  275205.,  279690.,
      284175.,  288660.,  278745.,  283290.,  287835.,  292380.,  209484.,
      213144.,  216804.,  220464.,  146883.,  149646.,  152409.,  155172.,
      491511.,  494814.,  498117.,  501420.,  641388.,  645816.,  650244.,
      654672.,  784125.,  789690.,  795255.,  800820.,  792465.,  798090.,
      803715.,  809340.,  618924.,  623448.,  627972.,  632496.,  452811.,
      456222.,  459633.,  463044.,  592276.,  596824.,  601372.,  605920.,
      769680.,  775776.,  781872.,  787968.,  936860.,  944520.,  952180.,
      959840.,  946380.,  954120.,  961860.,  969600.,  735632.,  741856.,
      748080.,  754304.,  535492.,  540184.,  544876.,  549568.,  656705.,
      662570.,  668435.,  674300.,  848820.,  856680.,  864540.,  872400.,
      1027275., 1037150., 1047025., 1056900., 1037175., 1047150., 1057125.,
      1067100., 801140.,  809160.,  817180.,  825200.,  579245.,  585290.,
      591335.,  597380.,  695225.,  701450.,  707675.,  713900.,  898260.,
      906600.,  914940.,  923280.,  1086675., 1097150., 1107625., 1118100.,
      1096575., 1107150., 1117725., 1128300., 846740.,  855240.,  863740.,
      872240.,  612005.,  618410.,  624815.,  631220.,  733745.,  740330.,
      746915.,  753500.,  947700.,  956520.,  965340.,  974160.,  1146075.,
      1157150., 1168225., 1179300., 1155975., 1167150., 1178325., 1189500.,
      892340.,  901320.,  910300.,  919280.,  644765.,  651530.,  658295.,
      665060.,  485524.,  490936.,  496348.,  501760.,  621456.,  628704.,
      635952.,  643200.,  744220.,  753320.,  762420.,  771520.,  750540.,
      759720.,  768900.,  778080.,  573072.,  580448.,  587824.,  595200.,
      409156.,  414712.,  420268.,  425824.,  285159.,  289326.,  293493.,
      297660.,  359724.,  365304.,  370884.,  376464.,  423885.,  430890.,
      437895.,  444900.,  427425.,  434490.,  441555.,  448620.,  320364.,
      326040.,  331716.,  337392.,  223995.,  228270.,  232545.,  236820.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      195675.,  197150.,  198625.,  200100.,  205575.,  207150.,  208725.,
      210300.,  255075.,  257150.,  259225.,  261300.,  264975.,  267150.,
      269325.,  271500.,  314475.,  317150.,  319825.,  322500.,  324375.,
      327150.,  329925.,  332700.,  611475.,  617150.,  622825.,  628500.,
      621375.,  627150.,  632925.,  638700.,  670875.,  677150.,  683425.,
      689700.,  680775.,  687150.,  693525.,  699900.,  730275.,  737150.,
      744025.,  750900.,  740175.,  747150.,  754125.,  761100.,  1027275.,
      1037150., 1047025., 1056900., 1037175., 1047150., 1057125., 1067100.,
      1086675., 1097150., 1107625., 1118100., 1096575., 1107150., 1117725.,
      1128300., 1146075., 1157150., 1168225., 1179300., 1155975., 1167150.,
      1178325., 1189500.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      93750.,   129480.,  167130.,  184050.,  149544.,  113694.,  160952.,
      217760.,  275720.,  295080.,  236320.,  177176.,  236530.,  315800.,
      394750.,  414950.,  328760.,  243850.,  315010.,  416600.,  515950.,
      536150.,  421880.,  310810.,  393490.,  517400.,  637150.,  657350.,
      515000.,  377770.,  273944.,  356640.,  434600.,  447560.,  346528.,
      251000.,  169062.,  216840.,  260010.,  267330.,  203112.,  144078.,
      544326.,  714120.,  877770.,  894690.,  701928.,  515886.,  681080.,
      889760.,  1088840., 1108200., 865312.,  632792.,  785890.,  1021400.,
      1243150., 1263350., 980600.,  712570.,  864370.,  1122200., 1364350.,
      1384550., 1073720., 779530.,  942850.,  1223000., 1485550., 1505750.,
      1166840., 846490.,  632792.,  813600.,  978920.,  991880.,  760480.,
      545336.,  377718.,  478920.,  567450.,  574770.,  432936.,  304350.,
      994902.,  1298760., 1588410., 1605330., 1254312., 918078.,  1201208.,
      1561760., 1901960., 1921320., 1494304., 1088408., 1335250., 1727000.,
      2091550., 2111750., 1632440., 1181290., 1413730., 1827800., 2212750.,
      2232950., 1725560., 1248250., 1492210., 1928600., 2333950., 2354150.,
      1818680., 1315210., 991640.,  1270560., 1523240., 1536200., 1174432.,
      839672.,  586374.,  741000.,  874890.,  882210.,  662760.,  464622.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      394750.,  414950.,  515950.,  536150.,  637150.,  657350.,
      1243150., 1263350., 1364350., 1384550., 1485550., 1505750.,
      2091550., 2111750., 2212750., 2232950., 2333950., 2354150.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186402.,  187500.,  257400.,  258960.,  332190.,  334260.,  365790.,
      368100.,  297144.,  299088.,  225858.,  227388.,  319864.,  321904.,
      432672.,  435520.,  547720.,  551440.,  586120.,  590160.,  469280.,
      472640.,  351736.,  354352.,  469790.,  473060.,  627080.,  631600.,
      783650.,  789500.,  823650.,  829900.,  652360.,  657520.,  483710.,
      487700.,  625310.,  630020.,  826760.,  833200.,  1023650., 1031900.,
      1063650., 1072300., 836680.,  843760.,  616190.,  621620.,  780830.,
      786980.,  1026440., 1034800., 1263650., 1274300., 1303650., 1314700.,
      1021000., 1030000., 748670.,  755540.,  542392.,  547888.,  705824.,
      713280.,  859720.,  869200.,  885320.,  895120.,  685088.,  693056.,
      495928.,  502000.,  333570.,  338124.,  427512.,  433680.,  512190.,
      520020.,  526590.,  534660.,  399672.,  406224.,  283170.,  288156.,
      1081506., 1088652., 1418616., 1428240., 1743390., 1755540., 1776990.,
      1789380., 1393848., 1403856., 1024194., 1031772., 1352056., 1362160.,
      1765920., 1779520., 2160520., 2177680., 2198920., 2216400., 1716512.,
      1730624., 1254904., 1265584., 1558430., 1571780., 2024840., 2042800.,
      2463650., 2486300., 2503650., 2526700., 1942600., 1961200., 1411070.,
      1425140., 1713950., 1728740., 2224520., 2244400., 2703650., 2728700.,
      2743650., 2769100., 2126920., 2147440., 1543550., 1559060., 1869470.,
      1885700., 2424200., 2446000., 2943650., 2971100., 2983650., 3011500.,
      2311240., 2333680., 1676030., 1692980., 1252024., 1265584., 1608992.,
      1627200., 1934920., 1957840., 1960520., 1983760., 1502240., 1520960.,
      1076536., 1090672., 744834.,  755436.,  943608.,  957840.,  1116990.,
      1134900., 1131390., 1149540., 851256.,  865872.,  597666.,  608700.,
      1976610., 1989804., 2579832., 2597520., 3154590., 3176820., 3188190.,
      3210660., 2490552., 2508624., 1822530., 1836156., 2384248., 2402416.,
      3099168., 3123520., 3773320., 3803920., 3811720., 3842640., 2963744.,
      2988608., 2158072., 2176816., 2647070., 2670500., 3422600., 3454000.,
      4143650., 4183100., 4183650., 4223500., 3232840., 3264880., 2338430.,
      2362580., 2802590., 2827460., 3622280., 3655600., 4383650., 4425500.,
      4423650., 4465900., 3417160., 3451120., 2470910., 2496500., 2958110.,
      2984420., 3821960., 3857200., 4623650., 4667900., 4663650., 4708300.,
      3601480., 3637360., 2603390., 2630420., 1961656., 1983280., 2512160.,
      2541120., 3010120., 3046480., 3035720., 3072400., 2319392., 2348864.,
      1657144., 1679344., 1156098., 1172748., 1459704., 1482000., 1721790.,
      1749780., 1736190., 1764420., 1302840., 1325520., 912162.,  929244.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      783650.,  789500.,  823650.,  829900.,  1023650., 1031900.,
      1063650., 1072300., 1263650., 1274300., 1303650., 1314700.,
      2463650., 2486300., 2503650., 2526700., 2703650., 2728700.,
      2743650., 2769100., 2943650., 2971100., 2983650., 3011500.,
      4143650., 4183100., 4183650., 4223500., 4383650., 4425500.,
      4423650., 4465900., 4623650., 4667900., 4663650., 4708300.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371706.,  372804.,  373902.,  375000.,  513240.,  514800.,  516360.,
      517920.,  662310.,  664380.,  666450.,  668520.,  729270.,  731580.,
      733890.,  736200.,  592344.,  594288.,  596232.,  598176.,  450186.,
      451716.,  453246.,  454776.,  637688.,  639728.,  641768.,  643808.,
      862496.,  865344.,  868192.,  871040.,  1091720., 1095440., 1099160.,
      1102880., 1168200., 1172240., 1176280., 1180320., 935200.,  938560.,
      941920.,  945280.,  700856.,  703472.,  706088.,  708704.,  936310.,
      939580.,  942850.,  946120.,  1249640., 1254160., 1258680., 1263200.,
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 1299560., 1304720., 1309880., 1315040., 963430.,  967420.,
      971410.,  975400.,  1245910., 1250620., 1255330., 1260040., 1647080.,
      1653520., 1659960., 1666400., 2039050., 2047300., 2055550., 2063800.,
      2118650., 2127300., 2135950., 2144600., 1666280., 1673360., 1680440.,
      1687520., 1226950., 1232380., 1237810., 1243240., 1555510., 1561660.,
      1567810., 1573960., 2044520., 2052880., 2061240., 2069600., 2516650.,
      2527300., 2537950., 2548600., 2596250., 2607300., 2618350., 2629400.,
      2033000., 2042000., 2051000., 2060000., 1490470., 1497340., 1504210.,
      1511080., 1079288., 1084784., 1090280., 1095776., 1404192., 1411648.,
      1419104., 1426560., 1709960., 1719440., 1728920., 1738400., 1760840.,
      1770640., 1780440., 1790240., 1362208., 1370176., 1378144., 1386112.,
      985784.,  991856.,  997928.,  1004000., 662586.,  667140.,  671694.,
      676248.,  848856.,  855024.,  861192.,  867360.,  1016550., 1024380.,
      1032210., 1040040., 1045110., 1053180., 1061250., 1069320., 792792.,
      799344.,  805896.,  812448.,  561354.,  566340.,  571326.,  576312.,
      2155866., 2163012., 2170158., 2177304., 2827608., 2837232., 2846856.,
      2856480., 3474630., 3486780., 3498930., 3511080., 3541590., 3553980.,
      3566370., 3578760., 2777688., 2787696., 2797704., 2807712., 2040810.,
      2048388., 2055966., 2063544., 2694008., 2704112., 2714216., 2724320.,
      3518240., 3531840., 3545440., 3559040., 4303880., 4321040., 4338200.,
      4355360., 4380360., 4397840., 4415320., 4432800., 3418912., 3433024.,
      3447136., 3461248., 2499128., 2509808., 2520488., 2531168., 3103510.,
      3116860., 3130210., 3143560., 4031720., 4049680., 4067640., 4085600.,
      4904650., 4927300., 4949950., 4972600., 4984250., 5007300., 5030350.,
      5053400., 3866600., 3885200., 3903800., 3922400., 2808070., 2822140.,
      2836210., 2850280., 3413110., 3427900., 3442690., 3457480., 4429160.,
      4449040., 4468920., 4488800., 5382250., 5407300., 5432350., 5457400.,
      5461850., 5487300., 5512750., 5538200., 4233320., 4253840., 4274360.,
      4294880., 3071590., 3087100., 3102610., 3118120., 3722710., 3738940.,
      3755170., 3771400., 4826600., 4848400., 4870200., 4892000., 5859850.,
      5887300., 5914750., 5942200., 5939450., 5967300., 5995150., 6023000.,
      4600040., 4622480., 4644920., 4667360., 3335110., 3352060., 3369010.,
      3385960., 2490488., 2504048., 2517608., 2531168., 3199776., 3217984.,
      3236192., 3254400., 3846920., 3869840., 3892760., 3915680., 3897800.,
      3921040., 3944280., 3967520., 2985760., 3004480., 3023200., 3041920.,
      2138936., 2153072., 2167208., 2181344., 1479066., 1489668., 1500270.,
      1510872., 1872984., 1887216., 1901448., 1915680., 2216070., 2233980.,
      2251890., 2269800., 2244630., 2262780., 2280930., 2299080., 1687896.,
      1702512., 1717128., 1731744., 1184298., 1195332., 1206366., 1217400.,
      3940026., 3953220., 3966414., 3979608., 5141976., 5159664., 5177352.,
      5195040., 6286950., 6309180., 6331410., 6353640., 6353910., 6376380.,
      6398850., 6421320., 4963032., 4981104., 4999176., 5017248., 3631434.,
      3645060., 3658686., 3672312., 4750328., 4768496., 4786664., 4804832.,
      6173984., 6198336., 6222688., 6247040., 7516040., 7546640., 7577240.,
      7607840., 7592520., 7623440., 7654360., 7685280., 5902624., 5927488.,
      5952352., 5977216., 4297400., 4316144., 4334888., 4353632., 5270710.,
      5294140., 5317570., 5341000., 6813800., 6845200., 6876600., 6908000.,
      8247850., 8287300., 8326750., 8366200., 8327450., 8367300., 8407150.,
      8447000., 6433640., 6465680., 6497720., 6529760., 4652710., 4676860.,
      4701010., 4725160., 5580310., 5605180., 5630050., 5654920., 7211240.,
      7244560., 7277880., 7311200., 8725450., 8767300., 8809150., 8851000.,
      8805050., 8847300., 8889550., 8931800., 6800360., 6834320., 6868280.,
      6902240., 4916230., 4941820., 4967410., 4993000., 5889910., 5916220.,
      5942530., 5968840., 7608680., 7643920., 7679160., 7714400., 9203050.,
      9247300., 9291550., 9335800., 9282650., 9327300., 9371950., 9416600.,
      7167080., 7202960., 7238840., 7274720., 5179750., 5206780., 5233810.,
      5260840., 3901688., 3923312., 3944936., 3966560., 4995360., 5024320.,
      5053280., 5082240., 5983880., 6020240., 6056600., 6092960., 6034760.,
      6071440., 6108120., 6144800., 4609312., 4638784., 4668256., 4697728.,
      3292088., 3314288., 3336488., 3358688., 2295546., 2312196., 2328846.,
      2345496., 2897112., 2919408., 2941704., 2964000., 3415590., 3443580.,
      3471570., 3499560., 3444150., 3472380., 3500610., 3528840., 2583000.,
      2605680., 2628360., 2651040., 1807242., 1824324., 1841406., 1858488.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1561450., 1567300., 1573150., 1579000., 1641050., 1647300., 1653550.,
      1659800., 2039050., 2047300., 2055550., 2063800., 2118650., 2127300.,
      2135950., 2144600., 2516650., 2527300., 2537950., 2548600., 2596250.,
      2607300., 2618350., 2629400., 4904650., 4927300., 4949950., 4972600.,
      4984250., 5007300., 5030350., 5053400., 5382250., 5407300., 5432350.,
      5457400., 5461850., 5487300., 5512750., 5538200., 5859850., 5887300.,
      5914750., 5942200., 5939450., 5967300., 5995150., 6023000., 8247850.,
      8287300., 8326750., 8366200., 8327450., 8367300., 8407150., 8447000.,
      8725450., 8767300., 8809150., 8851000., 8805050., 8847300., 8889550.,
      8931800., 9203050., 9247300., 9291550., 9335800., 9282650., 9327300.,
      9371950., 9416600.};
  const std::array<int, 4> in_shape = {{3, 7, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755.,  2404.,  3080.,  3350.,  3620.,  2920.,  2205.,  3008.,  4048.,
      5100.,  5410.,  5720.,  4560.,  3404.,  4420.,  5880.,  7325.,  7650.,
      7975.,  6300.,  4660.,  5890.,  7770.,  9600.,  9925.,  10250., 8050.,
      5920.,  7360.,  9660.,  11875., 12200., 12525., 9800.,  7180.,  5156.,
      6704.,  8160.,  8370.,  8580.,  6640.,  4808.,  3213.,  4120.,  4940.,
      5060.,  5180.,  3940.,  2799.,  10134., 13282., 16310., 16580., 16850.,
      13210., 9702.,  12710., 16592., 20290., 20600., 20910., 16320., 11930.,
      14710., 19110., 23250., 23575., 23900., 18550., 13480., 16180., 21000.,
      25525., 25850., 26175., 20300., 14740., 17650., 22890., 27800., 28125.,
      28450., 22050., 16000., 11918., 15328., 18450., 18660., 18870., 14480.,
      10394., 7182.,  9118.,  10820., 10940., 11060., 8350.,  5886.,  18513.,
      24160., 29540., 29810., 30080., 23500., 17199., 22412., 29136., 35480.,
      35790., 36100., 28080., 20456., 25000., 32340., 39175., 39500., 39825.,
      30800., 22300., 26470., 34230., 41450., 41775., 42100., 32550., 23560.,
      27940., 36120., 43725., 44050., 44375., 34300., 24820., 18680., 23952.,
      28740., 28950., 29160., 22320., 15980., 11151., 14116., 16700., 16820.,
      16940., 12760., 8973.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7325.,  7650.,  7975.,  9600.,  9925.,  10250., 11875., 12200., 12525.,
      23250., 23575., 23900., 25525., 25850., 26175., 27800., 28125., 28450.,
      39175., 39500., 39825., 41450., 41775., 42100., 43725., 44050., 44375.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  4694.,  4808.,  6010.,  6160.,  6535.,  6700.,  7060.,
      7240.,  5690.,  5840.,  4293.,  4410.,  5866.,  6016.,  7888.,  8096.,
      9930.,  10200., 10530., 10820., 11130., 11440., 8864.,  9120.,  6610.,
      6808.,  8600.,  8840.,  11430., 11760., 14225., 14650., 14850., 15300.,
      15475., 15950., 12210., 12600., 9020.,  9320.,  11435., 11780., 15070.,
      15540., 18600., 19200., 19225., 19850., 19850., 20500., 15570., 16100.,
      11435., 11840., 14270., 14720., 18710., 19320., 22975., 23750., 23600.,
      24400., 24225., 25050., 18930., 19600., 13850., 14360., 9910.,  10312.,
      12864., 13408., 15630., 16320., 16030., 16740., 16430., 17160., 12688.,
      13280., 9166.,  9616.,  6093.,  6426.,  7790.,  8240.,  9310.,  9880.,
      9535.,  10120., 9760.,  10360., 7394.,  7880.,  5229.,  5598.,  19746.,
      20268., 25862., 26564., 31735., 32620., 32260., 33160., 32785., 33700.,
      25682., 26420., 18846., 19404., 24682., 25420., 32192., 33184., 39330.,
      40580., 39930., 41200., 40530., 41820., 31600., 32640., 23074., 23860.,
      28445., 29420., 36910., 38220., 44850., 46500., 45475., 47150., 46100.,
      47800., 35730., 37100., 25925., 26960., 31280., 32360., 40550., 42000.,
      49225., 51050., 49850., 51700., 50475., 52350., 39090., 40600., 28340.,
      29480., 34115., 35300., 44190., 45780., 53600., 55600., 54225., 56250.,
      54850., 56900., 42450., 44100., 30755., 32000., 22846., 23836., 29328.,
      30656., 35230., 36900., 35630., 37320., 36030., 37740., 27584., 28960.,
      19750., 20788., 13590., 14364., 17198., 18236., 20335., 21640., 20560.,
      21880., 20785., 22120., 15626., 16700., 10962., 11772., 36063., 37026.,
      47030., 48320., 57460., 59080., 57985., 59620., 58510., 60160., 45674.,
      47000., 33399., 34398., 43498., 44824., 56496., 58272., 68730., 70960.,
      69330., 71580., 69930., 72200., 54336., 56160., 39538., 40912., 48290.,
      50000., 62390., 64680., 75475., 78350., 76100., 79000., 76725., 79650.,
      59250., 61600., 42830., 44600., 51125., 52940., 66030., 68460., 79850.,
      82900., 80475., 83550., 81100., 84200., 62610., 65100., 45245., 47120.,
      53960., 55880., 69670., 72240., 84225., 87450., 84850., 88100., 85475.,
      88750., 65970., 68600., 47660., 49640., 35782., 37360., 45792., 47904.,
      54830., 57480., 55230., 57900., 55630., 58320., 42480., 44640., 30334.,
      31960., 21087., 22302., 26606., 28232., 31360., 33400., 31585., 33640.,
      31810., 33880., 23858., 25520., 16695., 17946.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225., 14650., 14850., 15300., 15475., 15950., 18600., 19200., 19225.,
      19850., 19850., 20500., 22975., 23750., 23600., 24400., 24225., 25050.,
      44850., 46500., 45475., 47150., 46100., 47800., 49225., 51050., 49850.,
      51700., 50475., 52350., 53600., 55600., 54225., 56250., 54850., 56900.,
      75475., 78350., 76100., 79000., 76725., 79650., 79850., 82900., 80475.,
      83550., 81100., 84200., 84225., 87450., 84850., 88100., 85475., 88750.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,   6858.,   6939.,   7020.,   9274.,   9388.,   9502.,   9616.,
      11870.,  12020.,  12170.,  12320.,  12905.,  13070.,  13235.,  13400.,
      13940.,  14120.,  14300.,  14480.,  11230.,  11380.,  11530.,  11680.,
      8469.,   8586.,   8703.,   8820.,   11582.,  11732.,  11882.,  12032.,
      15568.,  15776.,  15984.,  16192.,  19590.,  19860.,  20130.,  20400.,
      20770.,  21060.,  21350.,  21640.,  21950.,  22260.,  22570.,  22880.,
      17472.,  17728.,  17984.,  18240.,  13022.,  13220.,  13418.,  13616.,
      16960.,  17200.,  17440.,  17680.,  22530.,  22860.,  23190.,  23520.,
      28025.,  28450.,  28875.,  29300.,  29250.,  29700.,  30150.,  30600.,
      30475.,  30950.,  31425.,  31900.,  24030.,  24420.,  24810.,  25200.,
      17740.,  18040.,  18340.,  18640.,  22525.,  22870.,  23215.,  23560.,
      29670.,  30140.,  30610.,  31080.,  36600.,  37200.,  37800.,  38400.,
      37825.,  38450.,  39075.,  39700.,  39050.,  39700.,  40350.,  41000.,
      30610.,  31140.,  31670.,  32200.,  22465.,  22870.,  23275.,  23680.,
      28090.,  28540.,  28990.,  29440.,  36810.,  37420.,  38030.,  38640.,
      45175.,  45950.,  46725.,  47500.,  46400.,  47200.,  48000.,  48800.,
      47625.,  48450.,  49275.,  50100.,  37190.,  37860.,  38530.,  39200.,
      27190.,  27700.,  28210.,  28720.,  19418.,  19820.,  20222.,  20624.,
      25184.,  25728.,  26272.,  26816.,  30570.,  31260.,  31950.,  32640.,
      31350.,  32060.,  32770.,  33480.,  32130.,  32860.,  33590.,  34320.,
      24784.,  25376.,  25968.,  26560.,  17882.,  18332.,  18782.,  19232.,
      11853.,  12186.,  12519.,  12852.,  15130.,  15580.,  16030.,  16480.,
      18050.,  18620.,  19190.,  19760.,  18485.,  19070.,  19655.,  20240.,
      18920.,  19520.,  20120.,  20720.,  14302.,  14788.,  15274.,  15760.,
      10089.,  10458.,  10827.,  11196.,  38970.,  39492.,  40014.,  40536.,
      51022.,  51724.,  52426.,  53128.,  62585.,  63470.,  64355.,  65240.,
      63620.,  64520.,  65420.,  66320.,  64655.,  65570.,  66485.,  67400.,
      50626.,  51364.,  52102.,  52840.,  37134.,  37692.,  38250.,  38808.,
      48626.,  49364.,  50102.,  50840.,  63392.,  64384.,  65376.,  66368.,
      77410.,  78660.,  79910.,  81160.,  78590.,  79860.,  81130.,  82400.,
      79770.,  81060.,  82350.,  83640.,  62160.,  63200.,  64240.,  65280.,
      45362.,  46148.,  46934.,  47720.,  55915.,  56890.,  57865.,  58840.,
      72510.,  73820.,  75130.,  76440.,  88050.,  89700.,  91350.,  93000.,
      89275.,  90950.,  92625.,  94300.,  90500.,  92200.,  93900.,  95600.,
      70090.,  71460.,  72830.,  74200.,  50815.,  51850.,  52885.,  53920.,
      61480.,  62560.,  63640.,  64720.,  79650.,  81100.,  82550.,  84000.,
      96625.,  98450.,  100275., 102100., 97850.,  99700.,  101550., 103400.,
      99075.,  100950., 102825., 104700., 76670.,  78180.,  79690.,  81200.,
      55540.,  56680.,  57820.,  58960.,  67045.,  68230.,  69415.,  70600.,
      86790.,  88380.,  89970.,  91560.,  105200., 107200., 109200., 111200.,
      106425., 108450., 110475., 112500., 107650., 109700., 111750., 113800.,
      83250.,  84900.,  86550.,  88200.,  60265.,  61510.,  62755.,  64000.,
      44702.,  45692.,  46682.,  47672.,  57328.,  58656.,  59984.,  61312.,
      68790.,  70460.,  72130.,  73800.,  69570.,  71260.,  72950.,  74640.,
      70350.,  72060.,  73770.,  75480.,  53792.,  55168.,  56544.,  57920.,
      38462.,  39500.,  40538.,  41576.,  26406.,  27180.,  27954.,  28728.,
      33358.,  34396.,  35434.,  36472.,  39365.,  40670.,  41975.,  43280.,
      39800.,  41120.,  42440.,  43760.,  40235.,  41570.,  42905.,  44240.,
      30178.,  31252.,  32326.,  33400.,  21114.,  21924.,  22734.,  23544.,
      71163.,  72126.,  73089.,  74052.,  92770.,  94060.,  95350.,  96640.,
      113300., 114920., 116540., 118160., 114335., 115970., 117605., 119240.,
      115370., 117020., 118670., 120320., 90022.,  91348.,  92674.,  94000.,
      65799.,  66798.,  67797.,  68796.,  85670.,  86996.,  88322.,  89648.,
      111216., 112992., 114768., 116544., 135230., 137460., 139690., 141920.,
      136410., 138660., 140910., 143160., 137590., 139860., 142130., 144400.,
      106848., 108672., 110496., 112320., 77702.,  79076.,  80450.,  81824.,
      94870.,  96580.,  98290.,  100000., 122490., 124780., 127070., 129360.,
      148075., 150950., 153825., 156700., 149300., 152200., 155100., 158000.,
      150525., 153450., 156375., 159300., 116150., 118500., 120850., 123200.,
      83890.,  85660.,  87430.,  89200.,  100435., 102250., 104065., 105880.,
      129630., 132060., 134490., 136920., 156650., 159700., 162750., 165800.,
      157875., 160950., 164025., 167100., 159100., 162200., 165300., 168400.,
      122730., 125220., 127710., 130200., 88615.,  90490.,  92365.,  94240.,
      106000., 107920., 109840., 111760., 136770., 139340., 141910., 144480.,
      165225., 168450., 171675., 174900., 166450., 169700., 172950., 176200.,
      167675., 170950., 174225., 177500., 129310., 131940., 134570., 137200.,
      93340.,  95320.,  97300.,  99280.,  69986.,  71564.,  73142.,  74720.,
      89472.,  91584.,  93696.,  95808.,  107010., 109660., 112310., 114960.,
      107790., 110460., 113130., 115800., 108570., 111260., 113950., 116640.,
      82800.,  84960.,  87120.,  89280.,  59042.,  60668.,  62294.,  63920.,
      40959.,  42174.,  43389.,  44604.,  51586.,  53212.,  54838.,  56464.,
      60680.,  62720.,  64760.,  66800.,  61115.,  63170.,  65225.,  67280.,
      61550.,  63620.,  65690.,  67760.,  46054.,  47716.,  49378.,  51040.,
      32139.,  33390.,  34641.,  35892.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025.,  28450.,  28875.,  29300.,  29250.,  29700.,  30150.,  30600.,
      30475.,  30950.,  31425.,  31900.,  36600.,  37200.,  37800.,  38400.,
      37825.,  38450.,  39075.,  39700.,  39050.,  39700.,  40350.,  41000.,
      45175.,  45950.,  46725.,  47500.,  46400.,  47200.,  48000.,  48800.,
      47625.,  48450.,  49275.,  50100.,  88050.,  89700.,  91350.,  93000.,
      89275.,  90950.,  92625.,  94300.,  90500.,  92200.,  93900.,  95600.,
      96625.,  98450.,  100275., 102100., 97850.,  99700.,  101550., 103400.,
      99075.,  100950., 102825., 104700., 105200., 107200., 109200., 111200.,
      106425., 108450., 110475., 112500., 107650., 109700., 111750., 113800.,
      148075., 150950., 153825., 156700., 149300., 152200., 155100., 158000.,
      150525., 153450., 156375., 159300., 156650., 159700., 162750., 165800.,
      157875., 160950., 164025., 167100., 159100., 162200., 165300., 168400.,
      165225., 168450., 171675., 174900., 166450., 169700., 172950., 176200.,
      167675., 170950., 174225., 177500.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13545.,  18572.,  23815.,  25945.,  28075.,  22652.,  17109.,  23380.,
      31472.,  39660.,  42100.,  44540.,  35504.,  26500.,  34475.,  45860.,
      57125.,  59675.,  62225.,  49140.,  36335.,  46025.,  60700.,  74975.,
      77525.,  80075.,  62860.,  46205.,  57575.,  75540.,  92825.,  95375.,
      97925.,  76580.,  56075.,  40180.,  52208.,  63500.,  65140.,  66780.,
      51632.,  37348.,  24885.,  31868.,  38155.,  39085.,  40015.,  30380.,
      21537.,  79695.,  104420., 128185., 130315., 132445., 103796., 76203.,
      99820.,  130256., 159220., 161660., 164100., 128016., 93532.,  115325.,
      149740., 182075., 184625., 187175., 145180., 105425., 126875., 164580.,
      199925., 202475., 205025., 158900., 115295., 138425., 179420., 217775.,
      220325., 222875., 172620., 125165., 93100.,  119632., 143860., 145500.,
      147140., 112784., 80860.,  55755.,  70676.,  83725.,  84655.,  85585.,
      64484.,  45351.,  145845., 190268., 232555., 234685., 236815., 184940.,
      135297., 176260., 229040., 278780., 281220., 283660., 220528., 160564.,
      196175., 253620., 307025., 309575., 312125., 241220., 174515., 207725.,
      268460., 324875., 327425., 329975., 254940., 184385., 219275., 283300.,
      342725., 345275., 347825., 268660., 194255., 146020., 187056., 224220.,
      225860., 227500., 173936., 124372., 86625.,  109484., 129295., 130225.,
      131155., 98588.,  69165.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      57125.,  59675.,  62225.,  74975.,  77525.,  80075.,  92825.,
      95375.,  97925.,  182075., 184625., 187175., 199925., 202475.,
      205025., 217775., 220325., 222875., 307025., 309575., 312125.,
      324875., 327425., 329975., 342725., 345275., 347825.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26775.,  27090.,  36700.,  37144.,  47045.,  47630.,  51245.,  51890.,
      55445.,  56150.,  44716.,  45304.,  33759.,  34218.,  46172.,  46760.,
      62128.,  62944.,  78260.,  79320.,  83060.,  84200.,  87860.,  89080.,
      70000.,  71008.,  52220.,  53000.,  68005.,  68950.,  90420.,  91720.,
      112575., 114250., 117575., 119350., 122575., 124450., 96740.,  98280.,
      71485.,  72670.,  90685.,  92050.,  119540., 121400., 147575., 149950.,
      152575., 155050., 157575., 160150., 123620., 125720., 90805.,  92410.,
      113365., 115150., 148660., 151080., 182575., 185650., 187575., 190750.,
      192575., 195850., 150500., 153160., 110125., 112150., 78764.,  80360.,
      102256., 104416., 124260., 127000., 127460., 130280., 130660., 133560.,
      100912., 103264., 72908.,  74696.,  48447.,  49770.,  61948.,  63736.,
      74045.,  76310.,  75845.,  78170.,  77645.,  80030.,  58828.,  60760.,
      41607.,  43074.,  157311., 159390., 206044., 208840., 252845., 256370.,
      257045., 260630., 261245., 264890., 204652., 207592., 150183., 152406.,
      196700., 199640., 256560., 260512., 313460., 318440., 318260., 323320.,
      323060., 328200., 251888., 256032., 183932., 187064., 226765., 230650.,
      294260., 299480., 357575., 364150., 362575., 369250., 367575., 374350.,
      284900., 290360., 206725., 210850., 249445., 253750., 323380., 329160.,
      392575., 399850., 397575., 404950., 402575., 410050., 311780., 317800.,
      226045., 230590., 272125., 276850., 352500., 358840., 427575., 435550.,
      432575., 440650., 437575., 445750., 338660., 345240., 245365., 250330.,
      182252., 186200., 233968., 239264., 281060., 287720., 284260., 291000.,
      287460., 294280., 220080., 225568., 157580., 161720., 108423., 111510.,
      137212., 141352., 162245., 167450., 164045., 169310., 165845., 171170.,
      124684., 128968., 87471.,  90702.,  287847., 291690., 375388., 380536.,
      458645., 465110., 462845., 469370., 467045., 473630., 364588., 369880.,
      266607., 270594., 347228., 352520., 450992., 458080., 548660., 557560.,
      553460., 562440., 558260., 567320., 433776., 441056., 315644., 321128.,
      385525., 392350., 498100., 507240., 602575., 614050., 607575., 619150.,
      612575., 624250., 473060., 482440., 341965., 349030., 408205., 415450.,
      527220., 536920., 637575., 649750., 642575., 654850., 647575., 659950.,
      499940., 509880., 361285., 368770., 430885., 438550., 556340., 566600.,
      672575., 685450., 677575., 690550., 682575., 695650., 526820., 537320.,
      380605., 388510., 285740., 292040., 365680., 374112., 437860., 448440.,
      441060., 451720., 444260., 455000., 339248., 347872., 242252., 248744.,
      168399., 173250., 212476., 218968., 250445., 258590., 252245., 260450.,
      254045., 262310., 190540., 197176., 133335., 138330.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      112575., 114250., 117575., 119350., 122575., 124450., 147575., 149950.,
      152575., 155050., 157575., 160150., 182575., 185650., 187575., 190750.,
      192575., 195850., 357575., 364150., 362575., 369250., 367575., 374350.,
      392575., 399850., 397575., 404950., 402575., 410050., 427575., 435550.,
      432575., 440650., 437575., 445750., 602575., 614050., 607575., 619150.,
      612575., 624250., 637575., 649750., 642575., 654850., 647575., 659950.,
      672575., 685450., 677575., 690550., 682575., 695650.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53235.,   53550.,   53865.,   54180.,   72956.,   73400.,   73844.,
      74288.,   93505.,   94090.,   94675.,   95260.,   101845.,  102490.,
      103135.,  103780.,  110185.,  110890.,  111595.,  112300.,  88844.,
      89432.,   90020.,   90608.,   67059.,   67518.,   67977.,   68436.,
      91756.,   92344.,   92932.,   93520.,   123440.,  124256.,  125072.,
      125888.,  155460.,  156520.,  157580.,  158640.,  164980.,  166120.,
      167260.,  168400.,  174500.,  175720.,  176940.,  178160.,  138992.,
      140000.,  141008.,  142016.,  103660.,  104440.,  105220.,  106000.,
      135065.,  136010.,  136955.,  137900.,  179540.,  180840.,  182140.,
      183440.,  223475.,  225150.,  226825.,  228500.,  233375.,  235150.,
      236925.,  238700.,  243275.,  245150.,  247025.,  248900.,  191940.,
      193480.,  195020.,  196560.,  141785.,  142970.,  144155.,  145340.,
      180005.,  181370.,  182735.,  184100.,  237220.,  239080.,  240940.,
      242800.,  292775.,  295150.,  297525.,  299900.,  302675.,  305150.,
      307625.,  310100.,  312575.,  315150.,  317725.,  320300.,  245140.,
      247240.,  249340.,  251440.,  180005.,  181610.,  183215.,  184820.,
      224945.,  226730.,  228515.,  230300.,  294900.,  297320.,  299740.,
      302160.,  362075.,  365150.,  368225.,  371300.,  371975.,  375150.,
      378325.,  381500.,  381875.,  385150.,  388425.,  391700.,  298340.,
      301000.,  303660.,  306320.,  218225.,  220250.,  222275.,  224300.,
      155932.,  157528.,  159124.,  160720.,  202352.,  204512.,  206672.,
      208832.,  245780.,  248520.,  251260.,  254000.,  252100.,  254920.,
      257740.,  260560.,  258420.,  261320.,  264220.,  267120.,  199472.,
      201824.,  204176.,  206528.,  144028.,  145816.,  147604.,  149392.,
      95571.,   96894.,   98217.,   99540.,   122108.,  123896.,  125684.,
      127472.,  145825.,  148090.,  150355.,  152620.,  149365.,  151690.,
      154015.,  156340.,  152905.,  155290.,  157675.,  160060.,  115724.,
      117656.,  119588.,  121520.,  81747.,   83214.,   84681.,   86148.,
      312543.,  314622.,  316701.,  318780.,  409292.,  412088.,  414884.,
      417680.,  502165.,  505690.,  509215.,  512740.,  510505.,  514090.,
      517675.,  521260.,  518845.,  522490.,  526135.,  529780.,  406364.,
      409304.,  412244.,  415184.,  298143.,  300366.,  302589.,  304812.,
      390460.,  393400.,  396340.,  399280.,  509168.,  513120.,  517072.,
      521024.,  621940.,  626920.,  631900.,  636880.,  631460.,  636520.,
      641580.,  646640.,  640980.,  646120.,  651260.,  656400.,  499632.,
      503776.,  507920.,  512064.,  364732.,  367864.,  370996.,  374128.,
      449645.,  453530.,  457415.,  461300.,  583300.,  588520.,  593740.,
      598960.,  708575.,  715150.,  721725.,  728300.,  718475.,  725150.,
      731825.,  738500.,  728375.,  735150.,  741925.,  748700.,  564340.,
      569800.,  575260.,  580720.,  409325.,  413450.,  417575.,  421700.,
      494585.,  498890.,  503195.,  507500.,  640980.,  646760.,  652540.,
      658320.,  777875.,  785150.,  792425.,  799700.,  787775.,  795150.,
      802525.,  809900.,  797675.,  805150.,  812625.,  820100.,  617540.,
      623560.,  629580.,  635600.,  447545.,  452090.,  456635.,  461180.,
      539525.,  544250.,  548975.,  553700.,  698660.,  705000.,  711340.,
      717680.,  847175.,  855150.,  863125.,  871100.,  857075.,  865150.,
      873225.,  881300.,  866975.,  875150.,  883325.,  891500.,  670740.,
      677320.,  683900.,  690480.,  485765.,  490730.,  495695.,  500660.,
      360556.,  364504.,  368452.,  372400.,  462640.,  467936.,  473232.,
      478528.,  555460.,  562120.,  568780.,  575440.,  561780.,  568520.,
      575260.,  582000.,  568100.,  574920.,  581740.,  588560.,  434672.,
      440160.,  445648.,  451136.,  311020.,  315160.,  319300.,  323440.,
      213759.,  216846.,  219933.,  223020.,  270284.,  274424.,  278564.,
      282704.,  319285.,  324490.,  329695.,  334900.,  322825.,  328090.,
      333355.,  338620.,  326365.,  331690.,  337015.,  342340.,  245084.,
      249368.,  253652.,  257936.,  171711.,  174942.,  178173.,  181404.,
      571851.,  575694.,  579537.,  583380.,  745628.,  750776.,  755924.,
      761072.,  910825.,  917290.,  923755.,  930220.,  919165.,  925690.,
      932215.,  938740.,  927505.,  934090.,  940675.,  947260.,  723884.,
      729176.,  734468.,  739760.,  529227.,  533214.,  537201.,  541188.,
      689164.,  694456.,  699748.,  705040.,  894896.,  901984.,  909072.,
      916160.,  1088420., 1097320., 1106220., 1115120., 1097940., 1106920.,
      1115900., 1124880., 1107460., 1116520., 1125580., 1134640., 860272.,
      867552.,  874832.,  882112.,  625804.,  631288.,  636772.,  642256.,
      764225.,  771050.,  777875.,  784700.,  987060.,  996200.,  1005340.,
      1014480., 1193675., 1205150., 1216625., 1228100., 1203575., 1215150.,
      1226725., 1238300., 1213475., 1225150., 1236825., 1248500., 936740.,
      946120.,  955500.,  964880.,  676865.,  683930.,  690995.,  698060.,
      809165.,  816410.,  823655.,  830900.,  1044740., 1054440., 1064140.,
      1073840., 1262975., 1275150., 1287325., 1299500., 1272875., 1285150.,
      1297425., 1309700., 1282775., 1295150., 1307525., 1319900., 989940.,
      999880.,  1009820., 1019760., 715085.,  722570.,  730055.,  737540.,
      854105.,  861770.,  869435.,  877100.,  1102420., 1112680., 1122940.,
      1133200., 1332275., 1345150., 1358025., 1370900., 1342175., 1355150.,
      1368125., 1381100., 1352075., 1365150., 1378225., 1391300., 1043140.,
      1053640., 1064140., 1074640., 753305.,  761210.,  769115.,  777020.,
      565180.,  571480.,  577780.,  584080.,  722928.,  731360.,  739792.,
      748224.,  865140.,  875720.,  886300.,  896880.,  871460.,  882120.,
      892780.,  903440.,  877780.,  888520.,  899260.,  910000.,  669872.,
      678496.,  687120.,  695744.,  478012.,  484504.,  490996.,  497488.,
      331947.,  336798.,  341649.,  346500.,  418460.,  424952.,  431444.,
      437936.,  492745.,  500890.,  509035.,  517180.,  496285.,  504490.,
      512695.,  520900.,  499825.,  508090.,  516355.,  524620.,  374444.,
      381080.,  387716.,  394352.,  261675.,  266670.,  271665.,  276660.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      223475.,  225150.,  226825.,  228500.,  233375.,  235150.,  236925.,
      238700.,  243275.,  245150.,  247025.,  248900.,  292775.,  295150.,
      297525.,  299900.,  302675.,  305150.,  307625.,  310100.,  312575.,
      315150.,  317725.,  320300.,  362075.,  365150.,  368225.,  371300.,
      371975.,  375150.,  378325.,  381500.,  381875.,  385150.,  388425.,
      391700.,  708575.,  715150.,  721725.,  728300.,  718475.,  725150.,
      731825.,  738500.,  728375.,  735150.,  741925.,  748700.,  777875.,
      785150.,  792425.,  799700.,  787775.,  795150.,  802525.,  809900.,
      797675.,  805150.,  812625.,  820100.,  847175.,  855150.,  863125.,
      871100.,  857075.,  865150.,  873225.,  881300.,  866975.,  875150.,
      883325.,  891500.,  1193675., 1205150., 1216625., 1228100., 1203575.,
      1215150., 1226725., 1238300., 1213475., 1225150., 1236825., 1248500.,
      1262975., 1275150., 1287325., 1299500., 1272875., 1285150., 1297425.,
      1309700., 1282775., 1295150., 1307525., 1319900., 1332275., 1345150.,
      1358025., 1370900., 1342175., 1355150., 1368125., 1381100., 1352075.,
      1365150., 1378225., 1391300.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      106398.,  145960.,  187250.,  204170.,  221090.,  178408.,  134766.,
      184328.,  248160.,  312760.,  332120.,  351480.,  280160.,  209096.,
      272290.,  362200.,  451150.,  471350.,  491550.,  388120.,  286930.,
      363850.,  479800.,  592550.,  612750.,  632950.,  496760.,  365050.,
      455410.,  597400.,  733950.,  754150.,  774350.,  605400.,  443170.,
      317192.,  412000.,  500920.,  513880.,  526840.,  407136.,  294344.,
      195822.,  250600.,  299810.,  307130.,  314450.,  238504.,  168894.,
      632070.,  828040.,  1016330., 1033250., 1050170., 822856.,  603990.,
      791144.,  1032160., 1261400., 1280760., 1300120., 1013984., 740648.,
      913210.,  1185400., 1440950., 1461150., 1481350., 1148600., 833770.,
      1004770., 1303000., 1582350., 1602550., 1622750., 1257240., 911890.,
      1096330., 1420600., 1723750., 1743950., 1764150., 1365880., 990010.,
      735848.,  945120.,  1135960., 1148920., 1161880., 890080.,  637736.,
      439254.,  556360.,  658490.,  665810.,  673130.,  506632.,  355878.,
      1157742., 1510120., 1845410., 1862330., 1879250., 1467304., 1073214.,
      1397960., 1816160., 2210040., 2229400., 2248760., 1747808., 1272200.,
      1554130., 2008600., 2430750., 2450950., 2471150., 1909080., 1380610.,
      1645690., 2126200., 2572150., 2592350., 2612550., 2017720., 1458730.,
      1737250., 2243800., 2713550., 2733750., 2753950., 2126360., 1536850.,
      1154504., 1478240., 1771000., 1783960., 1796920., 1373024., 981128.,
      682686.,  862120.,  1017170., 1024490., 1031810., 774760.,  542862.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      451150.,  471350.,  491550.,  592550.,  612750.,  632950.,  733950.,
      754150.,  774350.,  1440950., 1461150., 1481350., 1582350., 1602550.,
      1622750., 1723750., 1743950., 1764150., 2430750., 2450950., 2471150.,
      2572150., 2592350., 2612550., 2713550., 2733750., 2753950.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      211554.,  212796.,  290168.,  291920.,  372190.,  374500.,  405790.,
      408340.,  439390.,  442180.,  354488.,  356816.,  267714.,  269532.,
      366328.,  368656.,  493088.,  496320.,  621320.,  625520.,  659720.,
      664240.,  698120.,  702960.,  556320.,  560320.,  415096.,  418192.,
      540830.,  544580.,  719240.,  724400.,  895650.,  902300.,  935650.,
      942700.,  975650.,  983100.,  770120.,  776240.,  569150.,  573860.,
      722270.,  727700.,  952200.,  959600.,  1175650., 1185100., 1215650.,
      1225500., 1255650., 1265900., 985160.,  993520.,  723710.,  730100.,
      903710.,  910820.,  1185160., 1194800., 1455650., 1467900., 1495650.,
      1508300., 1535650., 1548700., 1200200., 1210800., 878270.,  886340.,
      628024.,  634384.,  815392.,  824000.,  990920.,  1001840., 1016520.,
      1027760., 1042120., 1053680., 804896.,  814272.,  581560.,  588688.,
      386370.,  391644.,  494072.,  501200.,  590590.,  599620.,  604990.,
      614260.,  619390.,  628900.,  469304.,  477008.,  331938.,  337788.,
      1255842., 1264140., 1644920., 1656080., 2018590., 2032660., 2052190.,
      2066500., 2085790., 2100340., 1633976., 1645712., 1199106., 1207980.,
      1570552., 1582288., 2048544., 2064320., 2502920., 2522800., 2541320.,
      2561520., 2579720., 2600240., 2011424., 2027968., 1468792., 1481296.,
      1810910., 1826420., 2349960., 2370800., 2855650., 2881900., 2895650.,
      2922300., 2935650., 2962700., 2275400., 2297200., 1651070., 1667540.,
      1992350., 2009540., 2582920., 2606000., 3135650., 3164700., 3175650.,
      3205100., 3215650., 3245500., 2490440., 2514480., 1805630., 1823780.,
      2173790., 2192660., 2815880., 2841200., 3415650., 3447500., 3455650.,
      3487900., 3495650., 3528300., 2705480., 2731760., 1960190., 1980020.,
      1455928., 1471696., 1869088., 1890240., 2245320., 2271920., 2270920.,
      2297840., 2296520., 2323760., 1758240., 1780160., 1258936., 1275472.,
      866178.,  878508.,  1096184., 1112720., 1296190., 1316980., 1310590.,
      1331620., 1324990., 1346260., 996152.,  1013264., 698850.,  711756.,
      2300130., 2315484., 2999672., 3020240., 3664990., 3690820., 3698590.,
      3724660., 3732190., 3758500., 2913464., 2934608., 2130498., 2146428.,
      2774776., 2795920., 3604000., 3632320., 4384520., 4420080., 4422920.,
      4458800., 4461320., 4497520., 3466528., 3495616., 2522488., 2544400.,
      3080990., 3108260., 3980680., 4017200., 4815650., 4861500., 4855650.,
      4901900., 4895650., 4942300., 3780680., 3818160., 2732990., 2761220.,
      3262430., 3291380., 4213640., 4252400., 5095650., 5144300., 5135650.,
      5184700., 5175650., 5225100., 3995720., 4035440., 2887550., 2917460.,
      3443870., 3474500., 4446600., 4487600., 5375650., 5427100., 5415650.,
      5467500., 5455650., 5507900., 4210760., 4252720., 3042110., 3073700.,
      2283832., 2309008., 2922784., 2956480., 3499720., 3542000., 3525320.,
      3567920., 3550920., 3593840., 2711584., 2746048., 1936312., 1962256.,
      1345986., 1365372., 1698296., 1724240., 2001790., 2034340., 2016190.,
      2048980., 2030590., 2063620., 1523000., 1549520., 1065762., 1085724.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      895650.,  902300.,  935650.,  942700.,  975650.,  983100.,  1175650.,
      1185100., 1215650., 1225500., 1255650., 1265900., 1455650., 1467900.,
      1495650., 1508300., 1535650., 1548700., 2855650., 2881900., 2895650.,
      2922300., 2935650., 2962700., 3135650., 3164700., 3175650., 3205100.,
      3215650., 3245500., 3415650., 3447500., 3455650., 3487900., 3495650.,
      3528300., 4815650., 4861500., 4855650., 4901900., 4895650., 4942300.,
      5095650., 5144300., 5135650., 5184700., 5175650., 5225100., 5375650.,
      5427100., 5415650., 5467500., 5455650., 5507900.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      421866.,   423108.,   424350.,   425592.,   578584.,   580336.,
      582088.,   583840.,   742070.,   744380.,   746690.,   749000.,
      809030.,   811580.,   814130.,   816680.,   875990.,   878780.,
      881570.,   884360.,   706648.,   708976.,   711304.,   713632.,
      533610.,   535428.,   537246.,   539064.,   730328.,   732656.,
      734984.,   737312.,   982944.,   986176.,   989408.,   992640.,
      1238440.,  1242640.,  1246840.,  1251040.,  1314920.,  1319440.,
      1323960.,  1328480.,  1391400.,  1396240.,  1401080.,  1405920.,
      1108640.,  1112640.,  1116640.,  1120640.,  827096.,   830192.,
      833288.,   836384.,   1077910.,  1081660.,  1085410.,  1089160.,
      1433320.,  1438480.,  1443640.,  1448800.,  1784650.,  1791300.,
      1797950.,  1804600.,  1864250.,  1871300.,  1878350.,  1885400.,
      1943850.,  1951300.,  1958750.,  1966200.,  1534120.,  1540240.,
      1546360.,  1552480.,  1133590.,  1138300.,  1143010.,  1147720.,
      1439110.,  1444540.,  1449970.,  1455400.,  1897000.,  1904400.,
      1911800.,  1919200.,  2341850.,  2351300.,  2360750.,  2370200.,
      2421450.,  2431300.,  2441150.,  2451000.,  2501050.,  2511300.,
      2521550.,  2531800.,  1961960.,  1970320.,  1978680.,  1987040.,
      1441030.,  1447420.,  1453810.,  1460200.,  1800310.,  1807420.,
      1814530.,  1821640.,  2360680.,  2370320.,  2379960.,  2389600.,
      2899050.,  2911300.,  2923550.,  2935800.,  2978650.,  2991300.,
      3003950.,  3016600.,  3058250.,  3071300.,  3084350.,  3097400.,
      2389800.,  2400400.,  2411000.,  2421600.,  1748470.,  1756540.,
      1764610.,  1772680.,  1249688.,  1256048.,  1262408.,  1268768.,
      1622176.,  1630784.,  1639392.,  1648000.,  1970920.,  1981840.,
      1992760.,  2003680.,  2021800.,  2033040.,  2044280.,  2055520.,
      2072680.,  2084240.,  2095800.,  2107360.,  1600416.,  1609792.,
      1619168.,  1628544.,  1155992.,  1163120.,  1170248.,  1177376.,
      767466.,   772740.,   778014.,   783288.,   981016.,   988144.,
      995272.,   1002400.,  1172150.,  1181180.,  1190210.,  1199240.,
      1200710.,  1209980.,  1219250.,  1228520.,  1229270.,  1238780.,
      1248290.,  1257800.,  930904.,   938608.,   946312.,   954016.,
      658026.,   663876.,   669726.,   675576.,   2503386.,  2511684.,
      2519982.,  2528280.,  3278680.,  3289840.,  3301000.,  3312160.,
      4023110.,  4037180.,  4051250.,  4065320.,  4090070.,  4104380.,
      4118690.,  4133000.,  4157030.,  4171580.,  4186130.,  4200680.,
      3256216.,  3267952.,  3279688.,  3291424.,  2389338.,  2398212.,
      2407086.,  2415960.,  3129368.,  3141104.,  3152840.,  3164576.,
      4081312.,  4097088.,  4112864.,  4128640.,  4985960.,  5005840.,
      5025720.,  5045600.,  5062440.,  5082640.,  5102840.,  5123040.,
      5138920.,  5159440.,  5179960.,  5200480.,  4006304.,  4022848.,
      4039392.,  4055936.,  2925080.,  2937584.,  2950088.,  2962592.,
      3606310.,  3621820.,  3637330.,  3652840.,  4679080.,  4699920.,
      4720760.,  4741600.,  5685050.,  5711300.,  5737550.,  5763800.,
      5764650.,  5791300.,  5817950.,  5844600.,  5844250.,  5871300.,
      5898350.,  5925400.,  4529000.,  4550800.,  4572600.,  4594400.,
      3285670.,  3302140.,  3318610.,  3335080.,  3967510.,  3984700.,
      4001890.,  4019080.,  5142760.,  5165840.,  5188920.,  5212000.,
      6242250.,  6271300.,  6300350.,  6329400.,  6321850.,  6351300.,
      6380750.,  6410200.,  6401450.,  6431300.,  6461150.,  6491000.,
      4956840.,  4980880.,  5004920.,  5028960.,  3593110.,  3611260.,
      3629410.,  3647560.,  4328710.,  4347580.,  4366450.,  4385320.,
      5606440.,  5631760.,  5657080.,  5682400.,  6799450.,  6831300.,
      6863150.,  6895000.,  6879050.,  6911300.,  6943550.,  6975800.,
      6958650.,  6991300.,  7023950.,  7056600.,  5384680.,  5410960.,
      5437240.,  5463520.,  3900550.,  3920380.,  3940210.,  3960040.,
      2896088.,  2911856.,  2927624.,  2943392.,  3717024.,  3738176.,
      3759328.,  3780480.,  4464040.,  4490640.,  4517240.,  4543840.,
      4514920.,  4541840.,  4568760.,  4595680.,  4565800.,  4593040.,
      4620280.,  4647520.,  3494560.,  3516480.,  3538400.,  3560320.,
      2501336.,  2517872.,  2534408.,  2550944.,  1720026.,  1732356.,
      1744686.,  1757016.,  2175832.,  2192368.,  2208904.,  2225440.,
      2571590.,  2592380.,  2613170.,  2633960.,  2600150.,  2621180.,
      2642210.,  2663240.,  2628710.,  2649980.,  2671250.,  2692520.,
      1975192.,  1992304.,  2009416.,  2026528.,  1384794.,  1397700.,
      1410606.,  1423512.,  4584906.,  4600260.,  4615614.,  4630968.,
      5978776.,  5999344.,  6019912.,  6040480.,  7304150.,  7329980.,
      7355810.,  7381640.,  7371110.,  7397180.,  7423250.,  7449320.,
      7438070.,  7464380.,  7490690.,  7517000.,  5805784.,  5826928.,
      5848072.,  5869216.,  4245066.,  4260996.,  4276926.,  4292856.,
      5528408.,  5549552.,  5570696.,  5591840.,  7179680.,  7208000.,
      7236320.,  7264640.,  8733480.,  8769040.,  8804600.,  8840160.,
      8809960.,  8845840.,  8881720.,  8917600.,  8886440.,  8922640.,
      8958840.,  8995040.,  6903968.,  6933056.,  6962144.,  6991232.,
      5023064.,  5044976.,  5066888.,  5088800.,  6134710.,  6161980.,
      6189250.,  6216520.,  7924840.,  7961360.,  7997880.,  8034400.,
      9585450.,  9631300.,  9677150.,  9723000.,  9665050.,  9711300.,
      9757550.,  9803800.,  9744650.,  9791300.,  9837950.,  9884600.,
      7523880.,  7561360.,  7598840.,  7636320.,  5437750.,  5465980.,
      5494210.,  5522440.,  6495910.,  6524860.,  6553810.,  6582760.,
      8388520.,  8427280.,  8466040.,  8504800.,  10142650., 10191300.,
      10239950., 10288600., 10222250., 10271300., 10320350., 10369400.,
      10301850., 10351300., 10400750., 10450200., 7951720.,  7991440.,
      8031160.,  8070880.,  5745190.,  5775100.,  5805010.,  5834920.,
      6857110.,  6887740.,  6918370.,  6949000.,  8852200.,  8893200.,
      8934200.,  8975200.,  10699850., 10751300., 10802750., 10854200.,
      10779450., 10831300., 10883150., 10935000., 10859050., 10911300.,
      10963550., 11015800., 8379560.,  8421520.,  8463480.,  8505440.,
      6052630.,  6084220.,  6115810.,  6147400.,  4542488.,  4567664.,
      4592840.,  4618016.,  5811872.,  5845568.,  5879264.,  5912960.,
      6957160.,  6999440.,  7041720.,  7084000.,  7008040.,  7050640.,
      7093240.,  7135840.,  7058920.,  7101840.,  7144760.,  7187680.,
      5388704.,  5423168.,  5457632.,  5492096.,  3846680.,  3872624.,
      3898568.,  3924512.,  2672586.,  2691972.,  2711358.,  2730744.,
      3370648.,  3396592.,  3422536.,  3448480.,  3971030.,  4003580.,
      4036130.,  4068680.,  3999590.,  4032380.,  4065170.,  4097960.,
      4028150.,  4061180.,  4094210.,  4127240.,  3019480.,  3046000.,
      3072520.,  3099040.,  2111562.,  2131524.,  2151486.,  2171448.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784650.,  1791300.,  1797950.,  1804600.,  1864250.,  1871300.,
      1878350.,  1885400.,  1943850.,  1951300.,  1958750.,  1966200.,
      2341850.,  2351300.,  2360750.,  2370200.,  2421450.,  2431300.,
      2441150.,  2451000.,  2501050.,  2511300.,  2521550.,  2531800.,
      2899050.,  2911300.,  2923550.,  2935800.,  2978650.,  2991300.,
      3003950.,  3016600.,  3058250.,  3071300.,  3084350.,  3097400.,
      5685050.,  5711300.,  5737550.,  5763800.,  5764650.,  5791300.,
      5817950.,  5844600.,  5844250.,  5871300.,  5898350.,  5925400.,
      6242250.,  6271300.,  6300350.,  6329400.,  6321850.,  6351300.,
      6380750.,  6410200.,  6401450.,  6431300.,  6461150.,  6491000.,
      6799450.,  6831300.,  6863150.,  6895000.,  6879050.,  6911300.,
      6943550.,  6975800.,  6958650.,  6991300.,  7023950.,  7056600.,
      9585450.,  9631300.,  9677150.,  9723000.,  9665050.,  9711300.,
      9757550.,  9803800.,  9744650.,  9791300.,  9837950.,  9884600.,
      10142650., 10191300., 10239950., 10288600., 10222250., 10271300.,
      10320350., 10369400., 10301850., 10351300., 10400750., 10450200.,
      10699850., 10751300., 10802750., 10854200., 10779450., 10831300.,
      10883150., 10935000., 10859050., 10911300., 10963550., 11015800.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1956.,  2666.,  3400.,  3670.,  3940.,  4210.,  3380.,  2541.,  3380.,
      4532.,  5690.,  6000.,  6310.,  6620.,  5260.,  3914.,  4990.,  6620.,
      8225.,  8550.,  8875.,  9200.,  7250.,  5350.,  6670.,  8780.,  10825.,
      11150., 11475., 11800., 9250.,  6790.,  8350.,  10940., 13425., 13750.,
      14075., 14400., 11250., 8230.,  5852.,  7596.,  9230.,  9440.,  9650.,
      9860.,  7620.,  5510.,  3648.,  4670.,  5590.,  5710.,  5830.,  5950.,
      4520.,  3207.,  11532., 15098., 18520., 18790., 19060., 19330., 15140.,
      11109., 14468., 18868., 23050., 23360., 23670., 23980., 18700., 13658.,
      16750., 21740., 26425., 26750., 27075., 27400., 21250., 15430., 18430.,
      23900., 29025., 29350., 29675., 30000., 23250., 16870., 20110., 26060.,
      31625., 31950., 32275., 32600., 25250., 18310., 13580., 17452., 20990.,
      21200., 21410., 21620., 16580., 11894., 8184.,  10382., 12310., 12430.,
      12550., 12670., 9560.,  6735.,  21108., 27530., 33640., 33910., 34180.,
      34450., 26900., 19677., 25556., 33204., 40410., 40720., 41030., 41340.,
      32140., 23402., 28510., 36860., 44625., 44950., 45275., 45600., 35250.,
      25510., 30190., 39020., 47225., 47550., 47875., 48200., 37250., 26950.,
      31870., 41180., 49825., 50150., 50475., 50800., 39250., 28390., 21308.,
      27308., 32750., 32960., 33170., 33380., 25540., 18278., 12720., 16094.,
      19030., 19150., 19270., 19390., 14600., 10263.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8225.,  8550.,  8875.,  9200.,  10825., 11150., 11475., 11800., 13425.,
      13750., 14075., 14400., 26425., 26750., 27075., 27400., 29025., 29350.,
      29675., 30000., 31625., 31950., 32275., 32600., 44625., 44950., 45275.,
      45600., 47225., 47550., 47875., 48200., 49825., 50150., 50475., 50800.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3822.,   3912.,  5206.,   5332.,  6635.,  6800.,  7160.,  7340.,   7685.,
      7880.,   8210.,  8420.,   6586.,  6760.,  4947.,  5082.,  6592.,   6760.,
      8832.,   9064.,  11080.,  11380., 11680., 12000., 12280., 12620.,  12880.,
      13240.,  10224., 10520.,  7600.,  7828.,  9710.,  9980.,  12870.,  13240.,
      15975.,  16450., 16600.,  17100., 17225., 17750., 17850., 18400.,  14050.,
      14500.,  10355., 10700.,  12950., 13340., 17030., 17560., 20975.,  21650.,
      21600.,  22300., 22225.,  22950., 22850., 23600., 17890., 18500.,  13115.,
      13580.,  16190., 16700.,  21190., 21880., 25975., 26850., 26600.,  27500.,
      27225.,  28150., 27850.,  28800., 21730., 22500., 15875., 16460.,  11248.,
      11704.,  14576., 15192.,  17680., 18460., 18080., 18880., 18480.,  19300.,
      18880.,  19720., 14560.,  15240., 10504., 11020., 6918.,  7296.,   8830.,
      9340.,   10535., 11180.,  10760., 11420., 10985., 11660., 11210.,  11900.,
      8482.,   9040.,  5991.,   6414.,  22470., 23064., 29398., 30196.,  36035.,
      37040.,  36560., 37580.,  37085., 38120., 37610., 38660., 29434.,  30280.,
      21579.,  22218., 28096.,  28936., 36608., 37736., 44680., 46100.,  45280.,
      46720.,  45880., 47340.,  46480., 47960., 36208., 37400., 26416.,  27316.,
      32390.,  33500., 41990.,  43480., 50975., 52850., 51600., 53500.,  52225.,
      54150.,  52850., 54800.,  40930., 42500., 29675., 30860., 35630.,  36860.,
      46150.,  47800., 55975.,  58050., 56600., 58700., 57225., 59350.,  57850.,
      60000.,  44770., 46500.,  32435., 33740., 38870., 40220., 50310.,  52120.,
      60975.,  63250., 61600.,  63900., 62225., 64550., 62850., 65200.,  48610.,
      50500.,  35195., 36620.,  26032., 27160., 33392., 34904., 40080.,  41980.,
      40480.,  42400., 40880.,  42820., 41280., 43240., 31584., 33160.,  22600.,
      23788.,  15486., 16368.,  19582., 20764., 23135., 24620., 23360.,  24860.,
      23585.,  25100., 23810.,  25340., 17890., 19120., 12543., 13470.,  41118.,
      42216.,  53590., 55060.,  65435., 67280., 65960., 67820., 66485.,  68360.,
      67010.,  68900., 52282.,  53800., 38211., 39354., 49600., 51112.,  64384.,
      66408.,  78280., 80820.,  78880., 81440., 79480., 82060., 80080.,  82680.,
      62192.,  64280., 45232.,  46804., 55070., 57020., 71110., 73720.,  85975.,
      89250.,  86600., 89900.,  87225., 90550., 87850., 91200., 67810.,  70500.,
      48995.,  51020., 58310.,  60380., 75270., 78040., 90975., 94450.,  91600.,
      95100.,  92225., 95750.,  92850., 96400., 71650., 74500., 51755.,  53900.,
      61550.,  63740., 79430.,  82360., 95975., 99650., 96600., 100300., 97225.,
      100950., 97850., 101600., 75490., 78500., 54515., 56780., 40816.,  42616.,
      52208.,  54616., 62480.,  65500., 62880., 65920., 63280., 66340.,  63680.,
      66760.,  48608., 51080.,  34696., 36556., 24054., 25440., 30334.,  32188.,
      35735.,  38060., 35960.,  38300., 36185., 38540., 36410., 38780.,  27298.,
      29200.,  19095., 20526.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975., 16450., 16600., 17100.,  17225., 17750.,  17850., 18400.,
      20975., 21650., 21600., 22300.,  22225., 22950.,  22850., 23600.,
      25975., 26850., 26600., 27500.,  27225., 28150.,  27850., 28800.,
      50975., 52850., 51600., 53500.,  52225., 54150.,  52850., 54800.,
      55975., 58050., 56600., 58700.,  57225., 59350.,  57850., 60000.,
      60975., 63250., 61600., 63900.,  62225., 64550.,  62850., 65200.,
      85975., 89250., 86600., 89900.,  87225., 90550.,  87850., 91200.,
      90975., 94450., 91600., 95100.,  92225., 95750.,  92850., 96400.,
      95975., 99650., 96600., 100300., 97225., 100950., 97850., 101600.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7554.,   7644.,   7734.,   7824.,   10286.,  10412.,  10538.,  10664.,
      13105.,  13270.,  13435.,  13600.,  14140.,  14320.,  14500.,  14680.,
      15175.,  15370.,  15565.,  15760.,  16210.,  16420.,  16630.,  16840.,
      12998.,  13172.,  13346.,  13520.,  9759.,   9894.,   10029.,  10164.,
      13016.,  13184.,  13352.,  13520.,  17432.,  17664.,  17896.,  18128.,
      21860.,  22160.,  22460.,  22760.,  23040.,  23360.,  23680.,  24000.,
      24220.,  24560.,  24900.,  25240.,  25400.,  25760.,  26120.,  26480.,
      20152.,  20448.,  20744.,  21040.,  14972.,  15200.,  15428.,  15656.,
      19150.,  19420.,  19690.,  19960.,  25370.,  25740.,  26110.,  26480.,
      31475.,  31950.,  32425.,  32900.,  32700.,  33200.,  33700.,  34200.,
      33925.,  34450.,  34975.,  35500.,  35150.,  35700.,  36250.,  36800.,
      27650.,  28100.,  28550.,  29000.,  20365.,  20710.,  21055.,  21400.,
      25510.,  25900.,  26290.,  26680.,  33530.,  34060.,  34590.,  35120.,
      41275.,  41950.,  42625.,  43300.,  42500.,  43200.,  43900.,  44600.,
      43725.,  44450.,  45175.,  45900.,  44950.,  45700.,  46450.,  47200.,
      35170.,  35780.,  36390.,  37000.,  25765.,  26230.,  26695.,  27160.,
      31870.,  32380.,  32890.,  33400.,  41690.,  42380.,  43070.,  43760.,
      51075.,  51950.,  52825.,  53700.,  52300.,  53200.,  54100.,  55000.,
      53525.,  54450.,  55375.,  56300.,  54750.,  55700.,  56650.,  57600.,
      42690.,  43460.,  44230.,  45000.,  31165.,  31750.,  32335.,  32920.,
      22040.,  22496.,  22952.,  23408.,  28536.,  29152.,  29768.,  30384.,
      34580.,  35360.,  36140.,  36920.,  35360.,  36160.,  36960.,  37760.,
      36140.,  36960.,  37780.,  38600.,  36920.,  37760.,  38600.,  39440.,
      28440.,  29120.,  29800.,  30480.,  20492.,  21008.,  21524.,  22040.,
      13458.,  13836.,  14214.,  14592.,  17150.,  17660.,  18170.,  18680.,
      20425.,  21070.,  21715.,  22360.,  20860.,  21520.,  22180.,  22840.,
      21295.,  21970.,  22645.,  23320.,  21730.,  22420.,  23110.,  23800.,
      16406.,  16964.,  17522.,  18080.,  11559.,  11982.,  12405.,  12828.,
      44346.,  44940.,  45534.,  46128.,  57998.,  58796.,  59594.,  60392.,
      71065.,  72070.,  73075.,  74080.,  72100.,  73120.,  74140.,  75160.,
      73135.,  74170.,  75205.,  76240.,  74170.,  75220.,  76270.,  77320.,
      58022.,  58868.,  59714.,  60560.,  42519.,  43158.,  43797.,  44436.,
      55352.,  56192.,  57032.,  57872.,  72088.,  73216.,  74344.,  75472.,
      87940.,  89360.,  90780.,  92200.,  89120.,  90560.,  92000.,  93440.,
      90300.,  91760.,  93220.,  94680.,  91480.,  92960.,  94440.,  95920.,
      71224.,  72416.,  73608.,  74800.,  51932.,  52832.,  53732.,  54632.,
      63670.,  64780.,  65890.,  67000.,  82490.,  83980.,  85470.,  86960.,
      100075., 101950., 103825., 105700., 101300., 103200., 105100., 107000.,
      102525., 104450., 106375., 108300., 103750., 105700., 107650., 109600.,
      80290.,  81860.,  83430.,  85000.,  58165.,  59350.,  60535.,  61720.,
      70030.,  71260.,  72490.,  73720.,  90650.,  92300.,  93950.,  95600.,
      109875., 111950., 114025., 116100., 111100., 113200., 115300., 117400.,
      112325., 114450., 116575., 118700., 113550., 115700., 117850., 120000.,
      87810.,  89540.,  91270.,  93000.,  63565.,  64870.,  66175.,  67480.,
      76390.,  77740.,  79090.,  80440.,  98810.,  100620., 102430., 104240.,
      119675., 121950., 124225., 126500., 120900., 123200., 125500., 127800.,
      122125., 124450., 126775., 129100., 123350., 125700., 128050., 130400.,
      95330.,  97220.,  99110.,  101000., 68965.,  70390.,  71815.,  73240.,
      50936.,  52064.,  53192.,  54320.,  65272.,  66784.,  68296.,  69808.,
      78260.,  80160.,  82060.,  83960.,  79040.,  80960.,  82880.,  84800.,
      79820.,  81760.,  83700.,  85640.,  80600.,  82560.,  84520.,  86480.,
      61592.,  63168.,  64744.,  66320.,  44012.,  45200.,  46388.,  47576.,
      30090.,  30972.,  31854.,  32736.,  37982.,  39164.,  40346.,  41528.,
      44785.,  46270.,  47755.,  49240.,  45220.,  46720.,  48220.,  49720.,
      45655.,  47170.,  48685.,  50200.,  46090.,  47620.,  49150.,  50680.,
      34550.,  35780.,  37010.,  38240.,  24159.,  25086.,  26013.,  26940.,
      81138.,  82236.,  83334.,  84432.,  105710., 107180., 108650., 110120.,
      129025., 130870., 132715., 134560., 130060., 131920., 133780., 135640.,
      131095., 132970., 134845., 136720., 132130., 134020., 135910., 137800.,
      103046., 104564., 106082., 107600., 75279.,  76422.,  77565.,  78708.,
      97688.,  99200.,  100712., 102224., 126744., 128768., 130792., 132816.,
      154020., 156560., 159100., 161640., 155200., 157760., 160320., 162880.,
      156380., 158960., 161540., 164120., 157560., 160160., 162760., 165360.,
      122296., 124384., 126472., 128560., 88892.,  90464.,  92036.,  93608.,
      108190., 110140., 112090., 114040., 139610., 142220., 144830., 147440.,
      168675., 171950., 175225., 178500., 169900., 173200., 176500., 179800.,
      171125., 174450., 177775., 181100., 172350., 175700., 179050., 182400.,
      132930., 135620., 138310., 141000., 95965.,  97990.,  100015., 102040.,
      114550., 116620., 118690., 120760., 147770., 150540., 153310., 156080.,
      178475., 181950., 185425., 188900., 179700., 183200., 186700., 190200.,
      180925., 184450., 187975., 191500., 182150., 185700., 189250., 192800.,
      140450., 143300., 146150., 149000., 101365., 103510., 105655., 107800.,
      120910., 123100., 125290., 127480., 155930., 158860., 161790., 164720.,
      188275., 191950., 195625., 199300., 189500., 193200., 196900., 200600.,
      190725., 194450., 198175., 201900., 191950., 195700., 199450., 203200.,
      147970., 150980., 153990., 157000., 106765., 109030., 111295., 113560.,
      79832.,  81632.,  83432.,  85232.,  102008., 104416., 106824., 109232.,
      121940., 124960., 127980., 131000., 122720., 125760., 128800., 131840.,
      123500., 126560., 129620., 132680., 124280., 127360., 130440., 133520.,
      94744.,  97216.,  99688.,  102160., 67532.,  69392.,  71252.,  73112.,
      46722.,  48108.,  49494.,  50880.,  58814.,  60668.,  62522.,  64376.,
      69145.,  71470.,  73795.,  76120.,  69580.,  71920.,  74260.,  76600.,
      70015.,  72370.,  74725.,  77080.,  70450.,  72820.,  75190.,  77560.,
      52694.,  54596.,  56498.,  58400.,  36759.,  38190.,  39621.,  41052.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475.,  31950.,  32425.,  32900.,  32700.,  33200.,  33700.,  34200.,
      33925.,  34450.,  34975.,  35500.,  35150.,  35700.,  36250.,  36800.,
      41275.,  41950.,  42625.,  43300.,  42500.,  43200.,  43900.,  44600.,
      43725.,  44450.,  45175.,  45900.,  44950.,  45700.,  46450.,  47200.,
      51075.,  51950.,  52825.,  53700.,  52300.,  53200.,  54100.,  55000.,
      53525.,  54450.,  55375.,  56300.,  54750.,  55700.,  56650.,  57600.,
      100075., 101950., 103825., 105700., 101300., 103200., 105100., 107000.,
      102525., 104450., 106375., 108300., 103750., 105700., 107650., 109600.,
      109875., 111950., 114025., 116100., 111100., 113200., 115300., 117400.,
      112325., 114450., 116575., 118700., 113550., 115700., 117850., 120000.,
      119675., 121950., 124225., 126500., 120900., 123200., 125500., 127800.,
      122125., 124450., 126775., 129100., 123350., 125700., 128050., 130400.,
      168675., 171950., 175225., 178500., 169900., 173200., 176500., 179800.,
      171125., 174450., 177775., 181100., 172350., 175700., 179050., 182400.,
      178475., 181950., 185425., 188900., 179700., 183200., 186700., 190200.,
      180925., 184450., 187975., 191500., 182150., 185700., 189250., 192800.,
      188275., 191950., 195625., 199300., 189500., 193200., 196900., 200600.,
      190725., 194450., 198175., 201900., 191950., 195700., 199450., 203200.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15135.,  20644.,  26345.,  28475.,  30605.,  32735.,  26284.,  19761.,
      26320.,  35296.,  44320.,  46760.,  49200.,  51640.,  41024.,  30520.,
      38975.,  51700.,  64225.,  66775.,  69325.,  71875.,  56620.,  41765.,
      52175.,  68660.,  84625.,  87175.,  89725.,  92275.,  72300.,  53045.,
      65375.,  85620.,  105025., 107575., 110125., 112675., 87980.,  64325.,
      45640.,  59200.,  71880.,  73520.,  75160.,  76800.,  59296.,  42832.,
      28275.,  36148.,  43205.,  44135.,  45065.,  45995.,  34876.,  24693.,
      90735.,  118756., 145625., 147755., 149885., 152015., 119020., 87297.,
      113680., 148192., 180960., 183400., 185840., 188280., 146752., 107128.,
      131375., 170420., 207025., 209575., 212125., 214675., 166380., 120725.,
      144575., 187380., 227425., 229975., 232525., 235075., 182060., 132005.,
      157775., 204340., 247825., 250375., 252925., 255475., 197740., 143285.,
      106120., 136256., 163720., 165360., 167000., 168640., 129184., 92560.,
      63555.,  80500.,  95285.,  96215.,  97145.,  98075.,  73852.,  51909.,
      166335., 216868., 264905., 267035., 269165., 271295., 211756., 154833.,
      201040., 261088., 317600., 320040., 322480., 324920., 252480., 183736.,
      223775., 289140., 349825., 352375., 354925., 357475., 276140., 199685.,
      236975., 306100., 370225., 372775., 375325., 377875., 291820., 210965.,
      250175., 323060., 390625., 393175., 395725., 398275., 307500., 222245.,
      166600., 213312., 255560., 257200., 258840., 260480., 199072., 142288.,
      98835.,  124852., 147365., 148295., 149225., 150155., 112828., 79125.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      64225.,  66775.,  69325.,  71875.,  84625.,  87175.,  89725.,  92275.,
      105025., 107575., 110125., 112675., 207025., 209575., 212125., 214675.,
      227425., 229975., 232525., 235075., 247825., 250375., 252925., 255475.,
      349825., 352375., 354925., 357475., 370225., 372775., 375325., 377875.,
      390625., 393175., 395725., 398275.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29919.,  30270.,  40796.,  41288.,  52045.,  52690.,  56245.,  56950.,
      60445.,  61210.,  64645.,  65470.,  51884.,  52568.,  38991.,  39522.,
      51980.,  52640.,  69680.,  70592.,  87460.,  88640.,  92260.,  93520.,
      97060.,  98400.,  101860., 103280., 80880.,  82048.,  60140.,  61040.,
      76885.,  77950.,  101940., 103400., 126575., 128450., 131575., 133550.,
      136575., 138650., 141575., 143750., 111460., 113240., 82165.,  83530.,
      102805., 104350., 135220., 137320., 166575., 169250., 171575., 174350.,
      176575., 179450., 181575., 184550., 142180., 144600., 104245., 106090.,
      128725., 130750., 168500., 171240., 206575., 210050., 211575., 215150.,
      216575., 220250., 221575., 225350., 172900., 175960., 126325., 128650.,
      89468.,  91280.,  115952., 118400., 140660., 143760., 143860., 147040.,
      147060., 150320., 150260., 153600., 115888., 118592., 83612.,  85664.,
      55047.,  56550.,  70268.,  72296.,  83845.,  86410.,  85645.,  88270.,
      87445.,  90130.,  89245.,  91990.,  67532.,  69752.,  47703.,  49386.,
      179103., 181470., 234332., 237512., 287245., 291250., 291445., 295510.,
      295645., 299770., 299845., 304030., 234668., 238040., 172047., 174594.,
      224012., 227360., 291888., 296384., 356260., 361920., 361060., 366800.,
      365860., 371680., 370660., 376560., 288752., 293504., 210668., 214256.,
      258325., 262750., 334900., 340840., 406575., 414050., 411575., 419150.,
      416575., 424250., 421575., 429350., 326500., 332760., 236725., 241450.,
      284245., 289150., 368180., 374760., 446575., 454850., 451575., 459950.,
      456575., 465050., 461575., 470150., 357220., 364120., 258805., 264010.,
      310165., 315550., 401460., 408680., 486575., 495650., 491575., 500750.,
      496575., 505850., 501575., 510950., 387940., 395480., 280885., 286570.,
      207740., 212240., 266480., 272512., 319860., 327440., 323060., 330720.,
      326260., 334000., 329460., 337280., 252080., 258368., 180380., 185120.,
      123591., 127110., 156284., 161000., 184645., 190570., 186445., 192430.,
      188245., 194290., 190045., 196150., 142796., 147704., 100119., 103818.,
      328287., 332670., 427868., 433736., 522445., 529810., 526645., 534070.,
      530845., 538330., 535045., 542590., 417452., 423512., 305103., 309666.,
      396044., 402080., 514096., 522176., 625060., 635200., 629860., 640080.,
      634660., 644960., 639460., 649840., 496624., 504960., 361196., 367472.,
      439765., 447550., 567860., 578280., 686575., 699650., 691575., 704750.,
      696575., 709850., 701575., 714950., 541540., 552280., 391285., 399370.,
      465685., 473950., 601140., 612200., 726575., 740450., 731575., 745550.,
      736575., 750650., 741575., 755750., 572260., 583640., 413365., 421930.,
      491605., 500350., 634420., 646120., 766575., 781250., 771575., 786350.,
      776575., 791450., 781575., 796550., 602980., 615000., 435445., 444490.,
      326012., 333200., 417008., 426624., 499060., 511120., 502260., 514400.,
      505460., 517680., 508660., 520960., 388272., 398144., 277148., 284576.,
      192135., 197670., 242300., 249704., 285445., 294730., 287245., 296590.,
      289045., 298450., 290845., 300310., 218060., 225656., 152535., 158250.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      126575., 128450., 131575., 133550., 136575., 138650., 141575., 143750.,
      166575., 169250., 171575., 174350., 176575., 179450., 181575., 184550.,
      206575., 210050., 211575., 215150., 216575., 220250., 221575., 225350.,
      406575., 414050., 411575., 419150., 416575., 424250., 421575., 429350.,
      446575., 454850., 451575., 459950., 456575., 465050., 461575., 470150.,
      486575., 495650., 491575., 500750., 496575., 505850., 501575., 510950.,
      686575., 699650., 691575., 704750., 696575., 709850., 701575., 714950.,
      726575., 740450., 731575., 745550., 736575., 750650., 741575., 755750.,
      766575., 781250., 771575., 786350., 776575., 791450., 781575., 796550.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      59487.,   59838.,   60189.,   60540.,   81100.,   81592.,   82084.,
      82576.,   103445.,  104090.,  104735.,  105380.,  111785.,  112490.,
      113195.,  113900.,  120125.,  120890.,  121655.,  122420.,  128465.,
      129290.,  130115.,  130940.,  103084.,  103768.,  104452.,  105136.,
      77451.,   77982.,   78513.,   79044.,   103300.,  103960.,  104620.,
      105280.,  138448.,  139360.,  140272.,  141184.,  173740.,  174920.,
      176100.,  177280.,  183260.,  184520.,  185780.,  187040.,  192780.,
      194120.,  195460.,  196800.,  202300.,  203720.,  205140.,  206560.,
      160592.,  161760.,  162928.,  164096.,  119380.,  120280.,  121180.,
      122080.,  152705.,  153770.,  154835.,  155900.,  202420.,  203880.,
      205340.,  206800.,  251275.,  253150.,  255025.,  256900.,  261175.,
      263150.,  265125.,  267100.,  271075.,  273150.,  275225.,  277300.,
      280975.,  283150.,  285325.,  287500.,  221140.,  222920.,  224700.,
      226480.,  162965.,  164330.,  165695.,  167060.,  204065.,  205610.,
      207155.,  208700.,  268340.,  270440.,  272540.,  274640.,  330475.,
      333150.,  335825.,  338500.,  340375.,  343150.,  345925.,  348700.,
      350275.,  353150.,  356025.,  358900.,  360175.,  363150.,  366125.,
      369100.,  281940.,  284360.,  286780.,  289200.,  206645.,  208490.,
      210335.,  212180.,  255425.,  257450.,  259475.,  261500.,  334260.,
      337000.,  339740.,  342480.,  409675.,  413150.,  416625.,  420100.,
      419575.,  423150.,  426725.,  430300.,  429475.,  433150.,  436825.,
      440500.,  439375.,  443150.,  446925.,  450700.,  342740.,  345800.,
      348860.,  351920.,  250325.,  252650.,  254975.,  257300.,  177124.,
      178936.,  180748.,  182560.,  229456.,  231904.,  234352.,  236800.,
      278220.,  281320.,  284420.,  287520.,  284540.,  287720.,  290900.,
      294080.,  290860.,  294120.,  297380.,  300640.,  297180.,  300520.,
      303860.,  307200.,  229072.,  231776.,  234480.,  237184.,  165172.,
      167224.,  169276.,  171328.,  108591.,  110094.,  111597.,  113100.,
      138508.,  140536.,  142564.,  144592.,  165125.,  167690.,  170255.,
      172820.,  168665.,  171290.,  173915.,  176540.,  172205.,  174890.,
      177575.,  180260.,  175745.,  178490.,  181235.,  183980.,  132844.,
      135064.,  137284.,  139504.,  93723.,   95406.,   97089.,   98772.,
      355839.,  358206.,  360573.,  362940.,  465484.,  468664.,  471844.,
      475024.,  570485.,  574490.,  578495.,  582500.,  578825.,  582890.,
      586955.,  591020.,  587165.,  591290.,  595415.,  599540.,  595505.,
      599690.,  603875.,  608060.,  465964.,  469336.,  472708.,  476080.,
      341547.,  344094.,  346641.,  349188.,  444676.,  448024.,  451372.,
      454720.,  579280.,  583776.,  588272.,  592768.,  706860.,  712520.,
      718180.,  723840.,  716380.,  722120.,  727860.,  733600.,  725900.,
      731720.,  737540.,  743360.,  735420.,  741320.,  747220.,  753120.,
      572752.,  577504.,  582256.,  587008.,  417748.,  421336.,  424924.,
      428512.,  512225.,  516650.,  521075.,  525500.,  663860.,  669800.,
      675740.,  681680.,  805675.,  813150.,  820625.,  828100.,  815575.,
      823150.,  830725.,  838300.,  825475.,  833150.,  840825.,  848500.,
      835375.,  843150.,  850925.,  858700.,  646740.,  653000.,  659260.,
      665520.,  468725.,  473450.,  478175.,  482900.,  563585.,  568490.,
      573395.,  578300.,  729780.,  736360.,  742940.,  749520.,  884875.,
      893150.,  901425.,  909700.,  894775.,  903150.,  911525.,  919900.,
      904675.,  913150.,  921625.,  930100.,  914575.,  923150.,  931725.,
      940300.,  707540.,  714440.,  721340.,  728240.,  512405.,  517610.,
      522815.,  528020.,  614945.,  620330.,  625715.,  631100.,  795700.,
      802920.,  810140.,  817360.,  964075.,  973150.,  982225.,  991300.,
      973975.,  983150.,  992325.,  1001500., 983875.,  993150.,  1002425.,
      1011700., 993775.,  1003150., 1012525., 1021900., 768340.,  775880.,
      783420.,  790960.,  556085.,  561770.,  567455.,  573140.,  410980.,
      415480.,  419980.,  424480.,  526928.,  532960.,  538992.,  545024.,
      632140.,  639720.,  647300.,  654880.,  638460.,  646120.,  653780.,
      661440.,  644780.,  652520.,  660260.,  668000.,  651100.,  658920.,
      666740.,  674560.,  497872.,  504160.,  510448.,  516736.,  356020.,
      360760.,  365500.,  370240.,  243663.,  247182.,  250701.,  254220.,
      307852.,  312568.,  317284.,  322000.,  363365.,  369290.,  375215.,
      381140.,  366905.,  372890.,  378875.,  384860.,  370445.,  376490.,
      382535.,  388580.,  373985.,  380090.,  386195.,  392300.,  280684.,
      285592.,  290500.,  295408.,  196539.,  200238.,  203937.,  207636.,
      652191.,  656574.,  660957.,  665340.,  849868.,  855736.,  861604.,
      867472.,  1037525., 1044890., 1052255., 1059620., 1045865., 1053290.,
      1060715., 1068140., 1054205., 1061690., 1069175., 1076660., 1062545.,
      1070090., 1077635., 1085180., 828844.,  834904.,  840964.,  847024.,
      605643.,  610206.,  614769.,  619332.,  786052.,  792088.,  798124.,
      804160.,  1020112., 1028192., 1036272., 1044352., 1239980., 1250120.,
      1260260., 1270400., 1249500., 1259720., 1269940., 1280160., 1259020.,
      1269320., 1279620., 1289920., 1268540., 1278920., 1289300., 1299680.,
      984912.,  993248.,  1001584., 1009920., 716116.,  722392.,  728668.,
      734944.,  871745.,  879530.,  887315.,  895100.,  1125300., 1135720.,
      1146140., 1156560., 1360075., 1373150., 1386225., 1399300., 1369975.,
      1383150., 1396325., 1409500., 1379875., 1393150., 1406425., 1419700.,
      1389775., 1403150., 1416525., 1429900., 1072340., 1083080., 1093820.,
      1104560., 774485.,  782570.,  790655.,  798740.,  923105.,  931370.,
      939635.,  947900.,  1191220., 1202280., 1213340., 1224400., 1439275.,
      1453150., 1467025., 1480900., 1449175., 1463150., 1477125., 1491100.,
      1459075., 1473150., 1487225., 1501300., 1468975., 1483150., 1497325.,
      1511500., 1133140., 1144520., 1155900., 1167280., 818165.,  826730.,
      835295.,  843860.,  974465.,  983210.,  991955.,  1000700., 1257140.,
      1268840., 1280540., 1292240., 1518475., 1533150., 1547825., 1562500.,
      1528375., 1543150., 1557925., 1572700., 1538275., 1553150., 1568025.,
      1582900., 1548175., 1563150., 1578125., 1593100., 1193940., 1205960.,
      1217980., 1230000., 861845.,  870890.,  879935.,  888980.,  644836.,
      652024.,  659212.,  666400.,  824400.,  834016.,  843632.,  853248.,
      986060.,  998120.,  1010180., 1022240., 992380.,  1004520., 1016660.,
      1028800., 998700.,  1010920., 1023140., 1035360., 1005020., 1017320.,
      1029620., 1041920., 766672.,  776544.,  786416.,  796288.,  546868.,
      554296.,  561724.,  569152.,  378735.,  384270.,  389805.,  395340.,
      477196.,  484600.,  492004.,  499408.,  561605.,  570890.,  580175.,
      589460.,  565145.,  574490.,  583835.,  593180.,  568685.,  578090.,
      587495.,  596900.,  572225.,  581690.,  591155.,  600620.,  428524.,
      436120.,  443716.,  451312.,  299355.,  305070.,  310785.,  316500.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      251275.,  253150.,  255025.,  256900.,  261175.,  263150.,  265125.,
      267100.,  271075.,  273150.,  275225.,  277300.,  280975.,  283150.,
      285325.,  287500.,  330475.,  333150.,  335825.,  338500.,  340375.,
      343150.,  345925.,  348700.,  350275.,  353150.,  356025.,  358900.,
      360175.,  363150.,  366125.,  369100.,  409675.,  413150.,  416625.,
      420100.,  419575.,  423150.,  426725.,  430300.,  429475.,  433150.,
      436825.,  440500.,  439375.,  443150.,  446925.,  450700.,  805675.,
      813150.,  820625.,  828100.,  815575.,  823150.,  830725.,  838300.,
      825475.,  833150.,  840825.,  848500.,  835375.,  843150.,  850925.,
      858700.,  884875.,  893150.,  901425.,  909700.,  894775.,  903150.,
      911525.,  919900.,  904675.,  913150.,  921625.,  930100.,  914575.,
      923150.,  931725.,  940300.,  964075.,  973150.,  982225.,  991300.,
      973975.,  983150.,  992325.,  1001500., 983875.,  993150.,  1002425.,
      1011700., 993775.,  1003150., 1012525., 1021900., 1360075., 1373150.,
      1386225., 1399300., 1369975., 1383150., 1396325., 1409500., 1379875.,
      1393150., 1406425., 1419700., 1389775., 1403150., 1416525., 1429900.,
      1439275., 1453150., 1467025., 1480900., 1449175., 1463150., 1477125.,
      1491100., 1459075., 1473150., 1487225., 1501300., 1468975., 1483150.,
      1497325., 1511500., 1518475., 1533150., 1547825., 1562500., 1528375.,
      1543150., 1557925., 1572700., 1538275., 1553150., 1568025., 1582900.,
      1548175., 1563150., 1578125., 1593100.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      119046.,  162440.,  207370.,  224290.,  241210.,  258130.,  207272.,
      155838.,  207704.,  278560.,  349800.,  369160.,  388520.,  407880.,
      324000.,  241016.,  308050.,  408600.,  507550.,  527750.,  547950.,
      568150.,  447480.,  330010.,  412690.,  543000.,  669150.,  689350.,
      709550.,  729750.,  571640.,  419290.,  517330.,  677400.,  830750.,
      850950.,  871150.,  891350.,  695800.,  508570.,  360440.,  467360.,
      567240.,  580200.,  593160.,  606120.,  467744.,  337688.,  222582.,
      284360.,  339610.,  346930.,  354250.,  361570.,  273896.,  193710.,
      719814.,  941960.,  1154890., 1171810., 1188730., 1205650., 943784.,
      692094.,  901208.,  1174560., 1433960., 1453320., 1472680., 1492040.,
      1162656., 848504.,  1040530., 1349400., 1638750., 1658950., 1679150.,
      1699350., 1316600., 954970.,  1145170., 1483800., 1800350., 1820550.,
      1840750., 1860950., 1440760., 1044250., 1249810., 1618200., 1961950.,
      1982150., 2002350., 2022550., 1564920., 1133530., 838904.,  1076640.,
      1293000., 1305960., 1318920., 1331880., 1019680., 730136.,  500790.,
      633800.,  749530.,  756850.,  764170.,  771490.,  580328.,  407406.,
      1320582., 1721480., 2102410., 2119330., 2136250., 2153170., 1680296.,
      1228350., 1594712., 2070560., 2518120., 2537480., 2556840., 2576200.,
      2001312., 1455992., 1773010., 2290200., 2769950., 2790150., 2810350.,
      2830550., 2185720., 1579930., 1877650., 2424600., 2931550., 2951750.,
      2971950., 2992150., 2309880., 1669210., 1982290., 2559000., 3093150.,
      3113350., 3133550., 3153750., 2434040., 1758490., 1317368., 1685920.,
      2018760., 2031720., 2044680., 2057640., 1571616., 1122584., 778998.,
      983240.,  1159450., 1166770., 1174090., 1181410., 886760.,  621102.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      507550.,  527750.,  547950.,  568150.,  669150.,  689350.,
      709550.,  729750.,  830750.,  850950.,  871150.,  891350.,
      1638750., 1658950., 1679150., 1699350., 1800350., 1820550.,
      1840750., 1860950., 1961950., 1982150., 2002350., 2022550.,
      2769950., 2790150., 2810350., 2830550., 2931550., 2951750.,
      2971950., 2992150., 3093150., 3113350., 3133550., 3153750.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      236706.,  238092.,  322936.,  324880.,  412190.,  414740.,  445790.,
      448580.,  479390.,  482420.,  512990.,  516260.,  411832.,  414544.,
      309570.,  311676.,  412792.,  415408.,  553504.,  557120.,  694920.,
      699600.,  733320.,  738320.,  771720.,  777040.,  810120.,  815760.,
      643360.,  648000.,  478456.,  482032.,  611870.,  616100.,  811400.,
      817200.,  1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 887880.,  894960.,  654590.,  660020.,  819230.,
      825380.,  1077640., 1086000., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500., 1133640., 1143280., 831230.,
      838580.,  1026590., 1034660., 1343880., 1354800., 1647650., 1661500.,
      1687650., 1701900., 1727650., 1742300., 1767650., 1782700., 1379400.,
      1391600., 1007870., 1017140., 713656.,  720880.,  924960.,  934720.,
      1122120., 1134480., 1147720., 1160400., 1173320., 1186320., 1198920.,
      1212240., 924704.,  935488.,  667192.,  675376.,  439170.,  445164.,
      560632.,  568720.,  668990.,  679220.,  683390.,  693860.,  697790.,
      708500.,  712190.,  723140.,  538936.,  547792.,  380706.,  387420.,
      1430178., 1439628., 1871224., 1883920., 2293790., 2309780., 2327390.,
      2343620., 2360990., 2377460., 2394590., 2411300., 1874104., 1887568.,
      1374018., 1384188., 1789048., 1802416., 2331168., 2349120., 2845320.,
      2867920., 2883720., 2906640., 2922120., 2945360., 2960520., 2984080.,
      2306336., 2325312., 1682680., 1697008., 2063390., 2081060., 2675080.,
      2698800., 3247650., 3277500., 3287650., 3317900., 3327650., 3358300.,
      3367650., 3398700., 2608200., 2633200., 1891070., 1909940., 2270750.,
      2290340., 2941320., 2967600., 3567650., 3600700., 3607650., 3641100.,
      3647650., 3681500., 3687650., 3721900., 2853960., 2881520., 2067710.,
      2088500., 2478110., 2499620., 3207560., 3236400., 3887650., 3923900.,
      3927650., 3964300., 3967650., 4004700., 4007650., 4045100., 3099720.,
      3129840., 2244350., 2267060., 1659832., 1677808., 2129184., 2153280.,
      2555720., 2586000., 2581320., 2611920., 2606920., 2637840., 2632520.,
      2663760., 2014240., 2039360., 1441336., 1460272., 987522.,  1001580.,
      1248760., 1267600., 1475390., 1499060., 1489790., 1513700., 1504190.,
      1528340., 1518590., 1542980., 1141048., 1160656., 800034.,  814812.,
      2623650., 2641164., 3419512., 3442960., 4175390., 4204820., 4208990.,
      4238660., 4242590., 4272500., 4276190., 4306340., 3336376., 3360592.,
      2438466., 2456700., 3165304., 3189424., 4108832., 4141120., 4995720.,
      5036240., 5034120., 5074960., 5072520., 5113680., 5110920., 5152400.,
      3969312., 4002624., 2886904., 2911984., 3514910., 3546020., 4538760.,
      4580400., 5487650., 5539900., 5527650., 5580300., 5567650., 5620700.,
      5607650., 5661100., 4328520., 4371440., 3127550., 3159860., 3722270.,
      3755300., 4805000., 4849200., 5807650., 5863100., 5847650., 5903500.,
      5887650., 5943900., 5927650., 5984300., 4574280., 4619760., 3304190.,
      3338420., 3929630., 3964580., 5071240., 5118000., 6127650., 6186300.,
      6167650., 6226700., 6207650., 6267100., 6247650., 6307500., 4820040.,
      4868080., 3480830., 3516980., 2606008., 2634736., 3333408., 3371840.,
      3989320., 4037520., 4014920., 4063440., 4040520., 4089360., 4066120.,
      4115280., 3103776., 3143232., 2215480., 2245168., 1535874., 1557996.,
      1936888., 1966480., 2281790., 2318900., 2296190., 2333540., 2310590.,
      2348180., 2324990., 2362820., 1743160., 1773520., 1219362., 1242204.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1007650., 1015100., 1047650., 1055500., 1087650., 1095900., 1127650.,
      1136300., 1327650., 1338300., 1367650., 1378700., 1407650., 1419100.,
      1447650., 1459500., 1647650., 1661500., 1687650., 1701900., 1727650.,
      1742300., 1767650., 1782700., 3247650., 3277500., 3287650., 3317900.,
      3327650., 3358300., 3367650., 3398700., 3567650., 3600700., 3607650.,
      3641100., 3647650., 3681500., 3687650., 3721900., 3887650., 3923900.,
      3927650., 3964300., 3967650., 4004700., 4007650., 4045100., 5487650.,
      5539900., 5527650., 5580300., 5567650., 5620700., 5607650., 5661100.,
      5807650., 5863100., 5847650., 5903500., 5887650., 5943900., 5927650.,
      5984300., 6127650., 6186300., 6167650., 6226700., 6207650., 6267100.,
      6247650., 6307500.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      472026.,   473412.,   474798.,   476184.,   643928.,   645872.,
      647816.,   649760.,   821830.,   824380.,   826930.,   829480.,
      888790.,   891580.,   894370.,   897160.,   955750.,   958780.,
      961810.,   964840.,   1022710.,  1025980.,  1029250.,  1032520.,
      820952.,   823664.,   826376.,   829088.,   617034.,   619140.,
      621246.,   623352.,   822968.,   825584.,   828200.,   830816.,
      1103392.,  1107008.,  1110624.,  1114240.,  1385160.,  1389840.,
      1394520.,  1399200.,  1461640.,  1466640.,  1471640.,  1476640.,
      1538120.,  1543440.,  1548760.,  1554080.,  1614600.,  1620240.,
      1625880.,  1631520.,  1282080.,  1286720.,  1291360.,  1296000.,
      953336.,   956912.,   960488.,   964064.,   1219510.,  1223740.,
      1227970.,  1232200.,  1617000.,  1622800.,  1628600.,  1634400.,
      2007850.,  2015300.,  2022750.,  2030200.,  2087450.,  2095300.,
      2103150.,  2111000.,  2167050.,  2175300.,  2183550.,  2191800.,
      2246650.,  2255300.,  2263950.,  2272600.,  1768680.,  1775760.,
      1782840.,  1789920.,  1303750.,  1309180.,  1314610.,  1320040.,
      1632310.,  1638460.,  1644610.,  1650760.,  2146920.,  2155280.,
      2163640.,  2172000.,  2644650.,  2655300.,  2665950.,  2676600.,
      2724250.,  2735300.,  2746350.,  2757400.,  2803850.,  2815300.,
      2826750.,  2838200.,  2883450.,  2895300.,  2907150.,  2919000.,
      2257640.,  2267280.,  2276920.,  2286560.,  1655110.,  1662460.,
      1669810.,  1677160.,  2045110.,  2053180.,  2061250.,  2069320.,
      2676840.,  2687760.,  2698680.,  2709600.,  3281450.,  3295300.,
      3309150.,  3323000.,  3361050.,  3375300.,  3389550.,  3403800.,
      3440650.,  3455300.,  3469950.,  3484600.,  3520250.,  3535300.,
      3550350.,  3565400.,  2746600.,  2758800.,  2771000.,  2783200.,
      2006470.,  2015740.,  2025010.,  2034280.,  1420088.,  1427312.,
      1434536.,  1441760.,  1840160.,  1849920.,  1859680.,  1869440.,
      2231880.,  2244240.,  2256600.,  2268960.,  2282760.,  2295440.,
      2308120.,  2320800.,  2333640.,  2346640.,  2359640.,  2372640.,
      2384520.,  2397840.,  2411160.,  2424480.,  1838624.,  1849408.,
      1860192.,  1870976.,  1326200.,  1334384.,  1342568.,  1350752.,
      872346.,   878340.,   884334.,   890328.,   1113176.,  1121264.,
      1129352.,  1137440.,  1327750.,  1337980.,  1348210.,  1358440.,
      1356310.,  1366780.,  1377250.,  1387720.,  1384870.,  1395580.,
      1406290.,  1417000.,  1413430.,  1424380.,  1435330.,  1446280.,
      1069016.,  1077872.,  1086728.,  1095584.,  754698.,   761412.,
      768126.,   774840.,   2850906.,  2860356.,  2869806.,  2879256.,
      3729752.,  3742448.,  3755144.,  3767840.,  4571590.,  4587580.,
      4603570.,  4619560.,  4638550.,  4654780.,  4671010.,  4687240.,
      4705510.,  4721980.,  4738450.,  4754920.,  4772470.,  4789180.,
      4805890.,  4822600.,  3734744.,  3748208.,  3761672.,  3775136.,
      2737866.,  2748036.,  2758206.,  2768376.,  3564728.,  3578096.,
      3591464.,  3604832.,  4644384.,  4662336.,  4680288.,  4698240.,
      5668040.,  5690640.,  5713240.,  5735840.,  5744520.,  5767440.,
      5790360.,  5813280.,  5821000.,  5844240.,  5867480.,  5890720.,
      5897480.,  5921040.,  5944600.,  5968160.,  4593696.,  4612672.,
      4631648.,  4650624.,  3351032.,  3365360.,  3379688.,  3394016.,
      4109110.,  4126780.,  4144450.,  4162120.,  5326440.,  5350160.,
      5373880.,  5397600.,  6465450.,  6495300.,  6525150.,  6555000.,
      6545050.,  6575300.,  6605550.,  6635800.,  6624650.,  6655300.,
      6685950.,  6716600.,  6704250.,  6735300.,  6766350.,  6797400.,
      5191400.,  5216400.,  5241400.,  5266400.,  3763270.,  3782140.,
      3801010.,  3819880.,  4521910.,  4541500.,  4561090.,  4580680.,
      5856360.,  5882640.,  5908920.,  5935200.,  7102250.,  7135300.,
      7168350.,  7201400.,  7181850.,  7215300.,  7248750.,  7282200.,
      7261450.,  7295300.,  7329150.,  7363000.,  7341050.,  7375300.,
      7409550.,  7443800.,  5680360.,  5707920.,  5735480.,  5763040.,
      4114630.,  4135420.,  4156210.,  4177000.,  4934710.,  4956220.,
      4977730.,  4999240.,  6386280.,  6415120.,  6443960.,  6472800.,
      7739050.,  7775300.,  7811550.,  7847800.,  7818650.,  7855300.,
      7891950.,  7928600.,  7898250.,  7935300.,  7972350.,  8009400.,
      7977850.,  8015300.,  8052750.,  8090200.,  6169320.,  6199440.,
      6229560.,  6259680.,  4465990.,  4488700.,  4511410.,  4534120.,
      3301688.,  3319664.,  3337640.,  3355616.,  4234272.,  4258368.,
      4282464.,  4306560.,  5081160.,  5111440.,  5141720.,  5172000.,
      5132040.,  5162640.,  5193240.,  5223840.,  5182920.,  5213840.,
      5244760.,  5275680.,  5233800.,  5265040.,  5296280.,  5327520.,
      4003360.,  4028480.,  4053600.,  4078720.,  2863736.,  2882672.,
      2901608.,  2920544.,  1960986.,  1975044.,  1989102.,  2003160.,
      2478680.,  2497520.,  2516360.,  2535200.,  2927110.,  2950780.,
      2974450.,  2998120.,  2955670.,  2979580.,  3003490.,  3027400.,
      2984230.,  3008380.,  3032530.,  3056680.,  3012790.,  3037180.,
      3061570.,  3085960.,  2262488.,  2282096.,  2301704.,  2321312.,
      1585290.,  1600068.,  1614846.,  1629624.,  5229786.,  5247300.,
      5264814.,  5282328.,  6815576.,  6839024.,  6862472.,  6885920.,
      8321350.,  8350780.,  8380210.,  8409640.,  8388310.,  8417980.,
      8447650.,  8477320.,  8455270.,  8485180.,  8515090.,  8545000.,
      8522230.,  8552380.,  8582530.,  8612680.,  6648536.,  6672752.,
      6696968.,  6721184.,  4858698.,  4876932.,  4895166.,  4913400.,
      6306488.,  6330608.,  6354728.,  6378848.,  8185376.,  8217664.,
      8249952.,  8282240.,  9950920.,  9991440.,  10031960., 10072480.,
      10027400., 10068240., 10109080., 10149920., 10103880., 10145040.,
      10186200., 10227360., 10180360., 10221840., 10263320., 10304800.,
      7905312.,  7938624.,  7971936.,  8005248.,  5748728.,  5773808.,
      5798888.,  5823968.,  6998710.,  7029820.,  7060930.,  7092040.,
      9035880.,  9077520.,  9119160.,  9160800.,  10923050., 10975300.,
      11027550., 11079800., 11002650., 11055300., 11107950., 11160600.,
      11082250., 11135300., 11188350., 11241400., 11161850., 11215300.,
      11268750., 11322200., 8614120.,  8657040.,  8699960.,  8742880.,
      6222790.,  6255100.,  6287410.,  6319720.,  7411510.,  7444540.,
      7477570.,  7510600.,  9565800.,  9610000.,  9654200.,  9698400.,
      11559850., 11615300., 11670750., 11726200., 11639450., 11695300.,
      11751150., 11807000., 11719050., 11775300., 11831550., 11887800.,
      11798650., 11855300., 11911950., 11968600., 9103080.,  9148560.,
      9194040.,  9239520.,  6574150.,  6608380.,  6642610.,  6676840.,
      7824310.,  7859260.,  7894210.,  7929160.,  10095720., 10142480.,
      10189240., 10236000., 12196650., 12255300., 12313950., 12372600.,
      12276250., 12335300., 12394350., 12453400., 12355850., 12415300.,
      12474750., 12534200., 12435450., 12495300., 12555150., 12615000.,
      9592040.,  9640080.,  9688120.,  9736160.,  6925510.,  6961660.,
      6997810.,  7033960.,  5183288.,  5212016.,  5240744.,  5269472.,
      6628384.,  6666816.,  6705248.,  6743680.,  7930440.,  7978640.,
      8026840.,  8075040.,  7981320.,  8029840.,  8078360.,  8126880.,
      8032200.,  8081040.,  8129880.,  8178720.,  8083080.,  8132240.,
      8181400.,  8230560.,  6168096.,  6207552.,  6247008.,  6286464.,
      4401272.,  4430960.,  4460648.,  4490336.,  3049626.,  3071748.,
      3093870.,  3115992.,  3844184.,  3873776.,  3903368.,  3932960.,
      4526470.,  4563580.,  4600690.,  4637800.,  4555030.,  4592380.,
      4629730.,  4667080.,  4583590.,  4621180.,  4658770.,  4696360.,
      4612150.,  4649980.,  4687810.,  4725640.,  3455960.,  3486320.,
      3516680.,  3547040.,  2415882.,  2438724.,  2461566.,  2484408.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2007850.,  2015300.,  2022750.,  2030200.,  2087450.,  2095300.,
      2103150.,  2111000.,  2167050.,  2175300.,  2183550.,  2191800.,
      2246650.,  2255300.,  2263950.,  2272600.,  2644650.,  2655300.,
      2665950.,  2676600.,  2724250.,  2735300.,  2746350.,  2757400.,
      2803850.,  2815300.,  2826750.,  2838200.,  2883450.,  2895300.,
      2907150.,  2919000.,  3281450.,  3295300.,  3309150.,  3323000.,
      3361050.,  3375300.,  3389550.,  3403800.,  3440650.,  3455300.,
      3469950.,  3484600.,  3520250.,  3535300.,  3550350.,  3565400.,
      6465450.,  6495300.,  6525150.,  6555000.,  6545050.,  6575300.,
      6605550.,  6635800.,  6624650.,  6655300.,  6685950.,  6716600.,
      6704250.,  6735300.,  6766350.,  6797400.,  7102250.,  7135300.,
      7168350.,  7201400.,  7181850.,  7215300.,  7248750.,  7282200.,
      7261450.,  7295300.,  7329150.,  7363000.,  7341050.,  7375300.,
      7409550.,  7443800.,  7739050.,  7775300.,  7811550.,  7847800.,
      7818650.,  7855300.,  7891950.,  7928600.,  7898250.,  7935300.,
      7972350.,  8009400.,  7977850.,  8015300.,  8052750.,  8090200.,
      10923050., 10975300., 11027550., 11079800., 11002650., 11055300.,
      11107950., 11160600., 11082250., 11135300., 11188350., 11241400.,
      11161850., 11215300., 11268750., 11322200., 11559850., 11615300.,
      11670750., 11726200., 11639450., 11695300., 11751150., 11807000.,
      11719050., 11775300., 11831550., 11887800., 11798650., 11855300.,
      11911950., 11968600., 12196650., 12255300., 12313950., 12372600.,
      12276250., 12335300., 12394350., 12453400., 12355850., 12415300.,
      12474750., 12534200., 12435450., 12495300., 12555150., 12615000.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1554.,  2142.,  2760.,  3030.,  2460.,  1869.,  2636.,  3564.,  4510.,
      4820.,  3860.,  2894.,  3850.,  5140.,  6425.,  6750.,  5350.,  3970.,
      5110.,  6760.,  8375.,  8700.,  6850.,  5050.,  6370.,  8380.,  10325.,
      10650., 8350.,  6130.,  7630.,  10000., 12275., 12600., 9850.,  7210.,
      5288.,  6868.,  8350.,  8560.,  6620.,  4790.,  3264.,  4182.,  5010.,
      5130.,  3900.,  2769.,  9762.,  12798., 15720., 15990., 12540., 9213.,
      12140., 15852., 19390., 19700., 15380., 11246., 13930., 18100., 22025.,
      22350., 17350., 12610., 15190., 19720., 23975., 24300., 18850., 13690.,
      16450., 21340., 25925., 26250., 20350., 14770., 17710., 22960., 27875.,
      28200., 21850., 15850., 11912., 15316., 18430., 18640., 14300., 10262.,
      7152.,  9078.,  10770., 10890., 8220.,  5793.,  17970., 23454., 28680.,
      28950., 22620., 16557., 21644., 28140., 34270., 34580., 26900., 19598.,
      24010., 31060., 37625., 37950., 29350., 21250., 25270., 32680., 39575.,
      39900., 30850., 22330., 26530., 34300., 41525., 41850., 32350., 23410.,
      27790., 35920., 43475., 43800., 33850., 24490., 18536., 23764., 28510.,
      28720., 21980., 15734., 11040., 13974., 16530., 16650., 12540., 8817.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6425.,  6750.,  8375.,  8700.,  10325., 10650., 12275., 12600.,
      22025., 22350., 23975., 24300., 25925., 26250., 27875., 28200.,
      37625., 37950., 39575., 39900., 41525., 41850., 43475., 43800.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3036.,  3108.,  4182.,  4284.,  5385.,  5520.,  5910.,  6060.,  4794.,
      4920.,  3639.,  3738.,  5140.,  5272.,  6944.,  7128.,  8780.,  9020.,
      9380.,  9640.,  7504.,  7720.,  5620.,  5788.,  7490.,  7700.,  9990.,
      10280., 12475., 12850., 13100., 13500., 10370., 10700., 7685.,  7940.,
      9920.,  10220., 13110., 13520., 16225., 16750., 16850., 17400., 13250.,
      13700., 9755.,  10100., 12350., 12740., 16230., 16760., 19975., 20650.,
      20600., 21300., 16130., 16700., 11825., 12260., 14780., 15260., 19350.,
      20000., 23725., 24550., 24350., 25200., 19010., 19700., 13895., 14420.,
      10156., 10576., 13168., 13736., 15980., 16700., 16380., 17120., 12640.,
      13240., 9124.,  9580.,  6186.,  6528.,  7902.,  8364.,  9435.,  10020.,
      9660.,  10260., 7314.,  7800.,  5169.,  5538.,  19020., 19524., 24918.,
      25596., 30585., 31440., 31110., 31980., 24378., 25080., 17895., 18426.,
      23572., 24280., 30752., 31704., 37580., 38780., 38180., 39400., 29776.,
      30760., 21748., 22492., 26930., 27860., 34950., 36200., 42475., 44050.,
      43100., 44700., 33410., 34700., 24245., 25220., 29360., 30380., 38070.,
      39440., 46225., 47950., 46850., 48600., 36290., 37700., 26315., 27380.,
      31790., 32900., 41190., 42680., 49975., 51850., 50600., 52500., 39170.,
      40700., 28385., 29540., 34220., 35420., 44310., 45920., 53725., 55750.,
      54350., 56400., 42050., 43700., 30455., 31700., 22828., 23824., 29296.,
      30632., 35180., 36860., 35580., 37280., 27232., 28600., 19492., 20524.,
      13530., 14304., 17118., 18156., 20235., 21540., 20460., 21780., 15378.,
      16440., 10785., 11586., 35004., 35940., 45654., 46908., 55785., 57360.,
      56310., 57900., 43962., 45240., 32151., 33114., 42004., 43288., 54560.,
      56280., 66380., 68540., 66980., 69160., 52048., 53800., 37876., 39196.,
      46370., 48020., 59910., 62120., 72475., 75250., 73100., 75900., 56450.,
      58700., 40805., 42500., 48800., 50540., 63030., 65360., 76225., 79150.,
      76850., 79800., 59330., 61700., 42875., 44660., 51230., 53060., 66150.,
      68600., 79975., 83050., 80600., 83700., 62210., 64700., 44945., 46820.,
      53660., 55580., 69270., 71840., 83725., 86950., 84350., 87600., 65090.,
      67700., 47015., 48980., 35500., 37072., 45424., 47528., 54380., 57020.,
      54780., 57440., 41824., 43960., 29860., 31468., 20874., 22080., 26334.,
      27948., 31035., 33060., 31260., 33300., 23442., 25080., 16401., 17634.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12475., 12850., 13100., 13500., 16225., 16750., 16850., 17400.,
      19975., 20650., 20600., 21300., 23725., 24550., 24350., 25200.,
      42475., 44050., 43100., 44700., 46225., 47950., 46850., 48600.,
      49975., 51850., 50600., 52500., 53725., 55750., 54350., 56400.,
      72475., 75250., 73100., 75900., 76225., 79150., 76850., 79800.,
      79975., 83050., 80600., 83700., 83725., 86950., 84350., 87600.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6000.,   6072.,   6144.,   6216.,   8262.,   8364.,   8466.,   8568.,
      10635.,  10770.,  10905.,  11040.,  11670.,  11820.,  11970.,  12120.,
      9462.,   9588.,   9714.,   9840.,   7179.,   7278.,   7377.,   7476.,
      10148.,  10280.,  10412.,  10544.,  13704.,  13888.,  14072.,  14256.,
      17320.,  17560.,  17800.,  18040.,  18500.,  18760.,  19020.,  19280.,
      14792.,  15008.,  15224.,  15440.,  11072.,  11240.,  11408.,  11576.,
      14770.,  14980.,  15190.,  15400.,  19690.,  19980.,  20270.,  20560.,
      24575.,  24950.,  25325.,  25700.,  25800.,  26200.,  26600.,  27000.,
      20410.,  20740.,  21070.,  21400.,  15115.,  15370.,  15625.,  15880.,
      19540.,  19840.,  20140.,  20440.,  25810.,  26220.,  26630.,  27040.,
      31925.,  32450.,  32975.,  33500.,  33150.,  33700.,  34250.,  34800.,
      26050.,  26500.,  26950.,  27400.,  19165.,  19510.,  19855.,  20200.,
      24310.,  24700.,  25090.,  25480.,  31930.,  32460.,  32990.,  33520.,
      39275.,  39950.,  40625.,  41300.,  40500.,  41200.,  41900.,  42600.,
      31690.,  32260.,  32830.,  33400.,  23215.,  23650.,  24085.,  24520.,
      29080.,  29560.,  30040.,  30520.,  38050.,  38700.,  39350.,  40000.,
      46625.,  47450.,  48275.,  49100.,  47850.,  48700.,  49550.,  50400.,
      37330.,  38020.,  38710.,  39400.,  27265.,  27790.,  28315.,  28840.,
      19892.,  20312.,  20732.,  21152.,  25768.,  26336.,  26904.,  27472.,
      31240.,  31960.,  32680.,  33400.,  32020.,  32760.,  33500.,  34240.,
      24680.,  25280.,  25880.,  26480.,  17792.,  18248.,  18704.,  19160.,
      12030.,  12372.,  12714.,  13056.,  15342.,  15804.,  16266.,  16728.,
      18285.,  18870.,  19455.,  20040.,  18720.,  19320.,  19920.,  20520.,
      14142.,  14628.,  15114.,  15600.,  9969.,   10338.,  10707.,  11076.,
      37536.,  38040.,  38544.,  39048.,  49158.,  49836.,  50514.,  51192.,
      60315.,  61170.,  62025.,  62880.,  61350.,  62220.,  63090.,  63960.,
      48054.,  48756.,  49458.,  50160.,  35259.,  35790.,  36321.,  36852.,
      46436.,  47144.,  47852.,  48560.,  60552.,  61504.,  62456.,  63408.,
      73960.,  75160.,  76360.,  77560.,  75140.,  76360.,  77580.,  78800.,
      58568.,  59552.,  60536.,  61520.,  42752.,  43496.,  44240.,  44984.,
      52930.,  53860.,  54790.,  55720.,  68650.,  69900.,  71150.,  72400.,
      83375.,  84950.,  86525.,  88100.,  84600.,  86200.,  87800.,  89400.,
      65530.,  66820.,  68110.,  69400.,  47515.,  48490.,  49465.,  50440.,
      57700.,  58720.,  59740.,  60760.,  74770.,  76140.,  77510.,  78880.,
      90725.,  92450.,  94175.,  95900.,  91950.,  93700.,  95450.,  97200.,
      71170.,  72580.,  73990.,  75400.,  51565.,  52630.,  53695.,  54760.,
      62470.,  63580.,  64690.,  65800.,  80890.,  82380.,  83870.,  85360.,
      98075.,  99950.,  101825., 103700., 99300.,  101200., 103100., 105000.,
      76810.,  78340.,  79870.,  81400.,  55615.,  56770.,  57925.,  59080.,
      67240.,  68440.,  69640.,  70840.,  87010.,  88620.,  90230.,  91840.,
      105425., 107450., 109475., 111500., 106650., 108700., 110750., 112800.,
      82450.,  84100.,  85750.,  87400.,  59665.,  60910.,  62155.,  63400.,
      44660.,  45656.,  46652.,  47648.,  57256.,  58592.,  59928.,  61264.,
      68680.,  70360.,  72040.,  73720.,  69460.,  71160.,  72860.,  74560.,
      53096.,  54464.,  55832.,  57200.,  37952.,  38984.,  40016.,  41048.,
      26286.,  27060.,  27834.,  28608.,  33198.,  34236.,  35274.,  36312.,
      39165.,  40470.,  41775.,  43080.,  39600.,  40920.,  42240.,  43560.,
      29694.,  30756.,  31818.,  32880.,  20769.,  21570.,  22371.,  23172.,
      69072.,  70008.,  70944.,  71880.,  90054.,  91308.,  92562.,  93816.,
      109995., 111570., 113145., 114720., 111030., 112620., 114210., 115800.,
      86646.,  87924.,  89202.,  90480.,  63339.,  64302.,  65265.,  66228.,
      82724.,  84008.,  85292.,  86576.,  107400., 109120., 110840., 112560.,
      130600., 132760., 134920., 137080., 131780., 133960., 136140., 138320.,
      102344., 104096., 105848., 107600., 74432.,  75752.,  77072.,  78392.,
      91090.,  92740.,  94390.,  96040.,  117610., 119820., 122030., 124240.,
      142175., 144950., 147725., 150500., 143400., 146200., 149000., 151800.,
      110650., 112900., 115150., 117400., 79915.,  81610.,  83305.,  85000.,
      95860.,  97600.,  99340.,  101080., 123730., 126060., 128390., 130720.,
      149525., 152450., 155375., 158300., 150750., 153700., 156650., 159600.,
      116290., 118660., 121030., 123400., 83965.,  85750.,  87535.,  89320.,
      100630., 102460., 104290., 106120., 129850., 132300., 134750., 137200.,
      156875., 159950., 163025., 166100., 158100., 161200., 164300., 167400.,
      121930., 124420., 126910., 129400., 88015.,  89890.,  91765.,  93640.,
      105400., 107320., 109240., 111160., 135970., 138540., 141110., 143680.,
      164225., 167450., 170675., 173900., 165450., 168700., 171950., 175200.,
      127570., 130180., 132790., 135400., 92065.,  94030.,  95995.,  97960.,
      69428.,  71000.,  72572.,  74144.,  88744.,  90848.,  92952.,  95056.,
      106120., 108760., 111400., 114040., 106900., 109560., 112220., 114880.,
      81512.,  83648.,  85784.,  87920.,  58112.,  59720.,  61328.,  62936.,
      40542.,  41748.,  42954.,  44160.,  51054.,  52668.,  54282.,  55896.,
      60045.,  62070.,  64095.,  66120.,  60480.,  62520.,  64560.,  66600.,
      45246.,  46884.,  48522.,  50160.,  31569.,  32802.,  34035.,  35268.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24575.,  24950.,  25325.,  25700.,  25800.,  26200.,  26600.,  27000.,
      31925.,  32450.,  32975.,  33500.,  33150.,  33700.,  34250.,  34800.,
      39275.,  39950.,  40625.,  41300.,  40500.,  41200.,  41900.,  42600.,
      46625.,  47450.,  48275.,  49100.,  47850.,  48700.,  49550.,  50400.,
      83375.,  84950.,  86525.,  88100.,  84600.,  86200.,  87800.,  89400.,
      90725.,  92450.,  94175.,  95900.,  91950.,  93700.,  95450.,  97200.,
      98075.,  99950.,  101825., 103700., 99300.,  101200., 103100., 105000.,
      105425., 107450., 109475., 111500., 106650., 108700., 110750., 112800.,
      142175., 144950., 147725., 150500., 143400., 146200., 149000., 151800.,
      149525., 152450., 155375., 158300., 150750., 153700., 156650., 159600.,
      156875., 159950., 163025., 166100., 158100., 161200., 164300., 167400.,
      164225., 167450., 170675., 173900., 165450., 168700., 171950., 175200.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11955.,  16500.,  21285.,  23415.,  19020.,  14457.,  20440.,  27648.,
      35000.,  37440.,  29984.,  22480.,  29975.,  40020.,  50025.,  52575.,
      41660.,  30905.,  39875.,  52740.,  65325.,  67875.,  53420.,  39365.,
      49775.,  65460.,  80625.,  83175.,  65180.,  47825.,  59675.,  78180.,
      95925.,  98475.,  76940.,  56285.,  41200.,  53472.,  64960.,  66600.,
      51456.,  37192.,  25275.,  32340.,  38685.,  39615.,  30060.,  21297.,
      76755.,  100596., 123525., 125655., 98508.,  72345.,  95320.,  124416.,
      152120., 154560., 120608., 88144.,  109175., 141780., 172425., 174975.,
      135740., 98585.,  119075., 154500., 187725., 190275., 147500., 107045.,
      128975., 167220., 203025., 205575., 159260., 115505., 138875., 179940.,
      218325., 220875., 171020., 123965., 93040.,  119520., 143680., 145320.,
      111360., 79816.,  55515.,  70356.,  83325.,  84255.,  63468.,  44625.,
      141555., 184692., 225765., 227895., 177996., 130233., 170200., 221184.,
      269240., 271680., 211232., 153808., 188375., 243540., 294825., 297375.,
      229820., 166265., 198275., 256260., 310125., 312675., 241580., 174725.,
      208175., 268980., 325425., 327975., 253340., 183185., 218075., 281700.,
      340725., 343275., 265100., 191645., 144880., 185568., 222400., 224040.,
      171264., 122440., 85755.,  108372., 127965., 128895., 96876.,  67953.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      50025.,  52575.,  65325.,  67875.,  80625.,  83175.,  95925.,  98475.,
      172425., 174975., 187725., 190275., 203025., 205575., 218325., 220875.,
      294825., 297375., 310125., 312675., 325425., 327975., 340725., 343275.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23631.,  23910.,  32604.,  33000.,  42045.,  42570.,  46245.,  46830.,
      37548.,  38040.,  28527.,  28914.,  40364.,  40880.,  54576.,  55296.,
      69060.,  70000.,  73860.,  74880.,  59120.,  59968.,  44300.,  44960.,
      59125.,  59950.,  78900.,  80040.,  98575.,  100050., 103575., 105150.,
      82020.,  83320.,  60805.,  61810.,  78565.,  79750.,  103860., 105480.,
      128575., 130650., 133575., 135750., 105060., 106840., 77365.,  78730.,
      98005.,  99550.,  128820., 130920., 158575., 161250., 163575., 166350.,
      128100., 130360., 93925.,  95650.,  117445., 119350., 153780., 156360.,
      188575., 191850., 193575., 196950., 151140., 153880., 110485., 112570.,
      80732.,  82400.,  104688., 106944., 127060., 129920., 130260., 133200.,
      100528., 102912., 72572.,  74384.,  49191.,  50550.,  62844.,  64680.,
      75045.,  77370.,  76845.,  79230.,  58188.,  60120.,  41127.,  42594.,
      151503., 153510., 198492., 201192., 243645., 247050., 247845., 251310.,
      194220., 197016., 142575., 144690., 187820., 190640., 245040., 248832.,
      299460., 304240., 304260., 309120., 237296., 241216., 173324., 176288.,
      214645., 218350., 278580., 283560., 338575., 344850., 343575., 349950.,
      266340., 271480., 193285., 197170., 234085., 238150., 303540., 309000.,
      368575., 375450., 373575., 380550., 289380., 295000., 209845., 214090.,
      253525., 257950., 328500., 334440., 398575., 406050., 403575., 411150.,
      312420., 318520., 226405., 231010., 272965., 277750., 353460., 359880.,
      428575., 436650., 433575., 441750., 335460., 342040., 242965., 247930.,
      182108., 186080., 233712., 239040., 280660., 287360., 283860., 290640.,
      217264., 222720., 155516., 159632., 107943., 111030., 136572., 140712.,
      161445., 166650., 163245., 168510., 122700., 126936., 86055.,  89250.,
      279375., 283110., 364380., 369384., 445245., 451530., 449445., 455790.,
      350892., 355992., 256623., 260466., 335276., 340400., 435504., 442368.,
      529860., 538480., 534660., 543360., 415472., 422464., 302348., 307616.,
      370165., 376750., 478260., 487080., 578575., 589650., 583575., 594750.,
      450660., 459640., 325765., 332530., 389605., 396550., 503220., 512520.,
      608575., 620250., 613575., 625350., 473700., 483160., 342325., 349450.,
      409045., 416350., 528180., 537960., 638575., 650850., 643575., 655950.,
      496740., 506680., 358885., 366370., 428485., 436150., 553140., 563400.,
      668575., 681450., 673575., 686550., 519780., 530200., 375445., 383290.,
      283484., 289760., 362736., 371136., 434260., 444800., 437460., 448080.,
      334000., 342528., 238460., 244880., 166695., 171510., 210300., 216744.,
      247845., 255930., 249645., 257790., 187212., 193752., 130983., 135906.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      98575.,  100050., 103575., 105150., 128575., 130650., 133575., 135750.,
      158575., 161250., 163575., 166350., 188575., 191850., 193575., 196950.,
      338575., 344850., 343575., 349950., 368575., 375450., 373575., 380550.,
      398575., 406050., 403575., 411150., 428575., 436650., 433575., 441750.,
      578575., 589650., 583575., 594750., 608575., 620250., 613575., 625350.,
      638575., 650850., 643575., 655950., 668575., 681450., 673575., 686550.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46983.,   47262.,   47541.,   47820.,   64812.,   65208.,   65604.,
      66000.,   83565.,   84090.,   84615.,   85140.,   91905.,   92490.,
      93075.,   93660.,   74604.,   75096.,   75588.,   76080.,   56667.,
      57054.,   57441.,   57828.,   80212.,   80728.,   81244.,   81760.,
      108432.,  109152.,  109872.,  110592.,  137180.,  138120.,  139060.,
      140000.,  146700.,  147720.,  148740.,  149760.,  117392.,  118240.,
      119088.,  119936.,  87940.,   88600.,   89260.,   89920.,   117425.,
      118250.,  119075.,  119900.,  156660.,  157800.,  158940.,  160080.,
      195675.,  197150.,  198625.,  200100.,  205575.,  207150.,  208725.,
      210300.,  162740.,  164040.,  165340.,  166640.,  120605.,  121610.,
      122615.,  123620.,  155945.,  157130.,  158315.,  159500.,  206100.,
      207720.,  209340.,  210960.,  255075.,  257150.,  259225.,  261300.,
      264975.,  267150.,  269325.,  271500.,  208340.,  210120.,  211900.,
      213680.,  153365.,  154730.,  156095.,  157460.,  194465.,  196010.,
      197555.,  199100.,  255540.,  257640.,  259740.,  261840.,  314475.,
      317150.,  319825.,  322500.,  324375.,  327150.,  329925.,  332700.,
      253940.,  256200.,  258460.,  260720.,  186125.,  187850.,  189575.,
      191300.,  232985.,  234890.,  236795.,  238700.,  304980.,  307560.,
      310140.,  312720.,  373875.,  377150.,  380425.,  383700.,  383775.,
      387150.,  390525.,  393900.,  299540.,  302280.,  305020.,  307760.,
      218885.,  220970.,  223055.,  225140.,  159796.,  161464.,  163132.,
      164800.,  207120.,  209376.,  211632.,  213888.,  251260.,  254120.,
      256980.,  259840.,  257580.,  260520.,  263460.,  266400.,  198672.,
      201056.,  203440.,  205824.,  143332.,  145144.,  146956.,  148768.,
      97023.,   98382.,   99741.,   101100.,  123852.,  125688.,  127524.,
      129360.,  147765.,  150090.,  152415.,  154740.,  151305.,  153690.,
      156075.,  158460.,  114444.,  116376.,  118308.,  120240.,  80787.,
      82254.,   83721.,   85188.,   300999.,  303006.,  305013.,  307020.,
      394284.,  396984.,  399684.,  402384.,  483885.,  487290.,  490695.,
      494100.,  492225.,  495690.,  499155.,  502620.,  385644.,  388440.,
      391236.,  394032.,  283035.,  285150.,  287265.,  289380.,  372820.,
      375640.,  378460.,  381280.,  486288.,  490080.,  493872.,  497664.,
      594140.,  598920.,  603700.,  608480.,  603660.,  608520.,  613380.,
      618240.,  470672.,  474592.,  478512.,  482432.,  343684.,  346648.,
      349612.,  352576.,  425585.,  429290.,  432995.,  436700.,  552180.,
      557160.,  562140.,  567120.,  670875.,  677150.,  683425.,  689700.,
      680775.,  687150.,  693525.,  699900.,  527540.,  532680.,  537820.,
      542960.,  382685.,  386570.,  390455.,  394340.,  464105.,  468170.,
      472235.,  476300.,  601620.,  607080.,  612540.,  618000.,  730275.,
      737150.,  744025.,  750900.,  740175.,  747150.,  754125.,  761100.,
      573140.,  578760.,  584380.,  590000.,  415445.,  419690.,  423935.,
      428180.,  502625.,  507050.,  511475.,  515900.,  651060.,  657000.,
      662940.,  668880.,  789675.,  797150.,  804625.,  812100.,  799575.,
      807150.,  814725.,  822300.,  618740.,  624840.,  630940.,  637040.,
      448205.,  452810.,  457415.,  462020.,  541145.,  545930.,  550715.,
      555500.,  700500.,  706920.,  713340.,  719760.,  849075.,  857150.,
      865225.,  873300.,  858975.,  867150.,  875325.,  883500.,  664340.,
      670920.,  677500.,  684080.,  480965.,  485930.,  490895.,  495860.,
      360244.,  364216.,  368188.,  372160.,  462096.,  467424.,  472752.,
      478080.,  554620.,  561320.,  568020.,  574720.,  560940.,  567720.,
      574500.,  581280.,  429072.,  434528.,  439984.,  445440.,  306916.,
      311032.,  315148.,  319264.,  212799.,  215886.,  218973.,  222060.,
      269004.,  273144.,  277284.,  281424.,  317685.,  322890.,  328095.,
      333300.,  321225.,  326490.,  331755.,  337020.,  241164.,  245400.,
      249636.,  253872.,  168915.,  172110.,  175305.,  178500.,  555015.,
      558750.,  562485.,  566220.,  723756.,  728760.,  733764.,  738768.,
      884205.,  890490.,  896775.,  903060.,  892545.,  898890.,  905235.,
      911580.,  696684.,  701784.,  706884.,  711984.,  509403.,  513246.,
      517089.,  520932.,  665428.,  670552.,  675676.,  680800.,  864144.,
      871008.,  877872.,  884736.,  1051100., 1059720., 1068340., 1076960.,
      1060620., 1069320., 1078020., 1086720., 823952.,  830944.,  837936.,
      844928.,  599428.,  604696.,  609964.,  615232.,  733745.,  740330.,
      746915.,  753500.,  947700.,  956520.,  965340.,  974160.,  1146075.,
      1157150., 1168225., 1179300., 1155975., 1167150., 1178325., 1189500.,
      892340.,  901320.,  910300.,  919280.,  644765.,  651530.,  658295.,
      665060.,  772265.,  779210.,  786155.,  793100.,  997140.,  1006440.,
      1015740., 1025040., 1205475., 1217150., 1228825., 1240500., 1215375.,
      1227150., 1238925., 1250700., 937940.,  947400.,  956860.,  966320.,
      677525.,  684650.,  691775.,  698900.,  810785.,  818090.,  825395.,
      832700.,  1046580., 1056360., 1066140., 1075920., 1264875., 1277150.,
      1289425., 1301700., 1274775., 1287150., 1299525., 1311900., 983540.,
      993480.,  1003420., 1013360., 710285.,  717770.,  725255.,  732740.,
      849305.,  856970.,  864635.,  872300.,  1096020., 1106280., 1116540.,
      1126800., 1324275., 1337150., 1350025., 1362900., 1334175., 1347150.,
      1360125., 1373100., 1029140., 1039560., 1049980., 1060400., 743045.,
      750890.,  758735.,  766580.,  560692.,  566968.,  573244.,  579520.,
      717072.,  725472.,  733872.,  742272.,  857980.,  868520.,  879060.,
      889600.,  864300.,  874920.,  885540.,  896160.,  659472.,  668000.,
      676528.,  685056.,  470500.,  476920.,  483340.,  489760.,  328575.,
      333390.,  338205.,  343020.,  414156.,  420600.,  427044.,  433488.,
      487605.,  495690.,  503775.,  511860.,  491145.,  499290.,  507435.,
      515580.,  367884.,  374424.,  380964.,  387504.,  257043.,  261966.,
      266889.,  271812.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      195675.,  197150.,  198625.,  200100.,  205575.,  207150.,  208725.,
      210300.,  255075.,  257150.,  259225.,  261300.,  264975.,  267150.,
      269325.,  271500.,  314475.,  317150.,  319825.,  322500.,  324375.,
      327150.,  329925.,  332700.,  373875.,  377150.,  380425.,  383700.,
      383775.,  387150.,  390525.,  393900.,  670875.,  677150.,  683425.,
      689700.,  680775.,  687150.,  693525.,  699900.,  730275.,  737150.,
      744025.,  750900.,  740175.,  747150.,  754125.,  761100.,  789675.,
      797150.,  804625.,  812100.,  799575.,  807150.,  814725.,  822300.,
      849075.,  857150.,  865225.,  873300.,  858975.,  867150.,  875325.,
      883500.,  1146075., 1157150., 1168225., 1179300., 1155975., 1167150.,
      1178325., 1189500., 1205475., 1217150., 1228825., 1240500., 1215375.,
      1227150., 1238925., 1250700., 1264875., 1277150., 1289425., 1301700.,
      1274775., 1287150., 1299525., 1311900., 1324275., 1337150., 1350025.,
      1362900., 1334175., 1347150., 1360125., 1373100.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      93750.,   129480.,  167130.,  184050.,  149544.,  113694.,  160952.,
      217760.,  275720.,  295080.,  236320.,  177176.,  236530.,  315800.,
      394750.,  414950.,  328760.,  243850.,  315010.,  416600.,  515950.,
      536150.,  421880.,  310810.,  393490.,  517400.,  637150.,  657350.,
      515000.,  377770.,  471970.,  618200.,  758350.,  778550.,  608120.,
      444730.,  325208.,  421920.,  512360.,  525320.,  405664.,  293048.,
      198870.,  254280.,  303930.,  311250.,  235944.,  166974.,  608694.,
      797640.,  979290.,  996210.,  780840.,  573342.,  755384.,  985760.,
      1205000., 1224360., 955168.,  697880.,  864370.,  1122200., 1364350.,
      1384550., 1073720., 779530.,  942850.,  1223000., 1485550., 1505750.,
      1166840., 846490.,  1021330., 1323800., 1606750., 1626950., 1259960.,
      913450.,  1099810., 1424600., 1727950., 1748150., 1353080., 980410.,
      735320.,  944160.,  1134440., 1147400., 878752.,  629432.,  437334.,
      553800.,  655290.,  662610.,  498600.,  350142.,  1123638., 1465800.,
      1791450., 1808370., 1412136., 1032990., 1349816., 1753760., 2134280.,
      2153640., 1674016., 1218584., 1492210., 1928600., 2333950., 2354150.,
      1818680., 1315210., 1570690., 2029400., 2455150., 2475350., 1911800.,
      1382170., 1649170., 2130200., 2576350., 2596550., 2004920., 1449130.,
      1727650., 2231000., 2697550., 2717750., 2098040., 1516090., 1145432.,
      1466400., 1756520., 1769480., 1351840., 965816.,  675798.,  853320.,
      1006650., 1013970., 761256.,  533310.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      394750.,  414950.,  515950.,  536150.,  637150.,  657350.,
      758350.,  778550.,  1364350., 1384550., 1485550., 1505750.,
      1606750., 1626950., 1727950., 1748150., 2333950., 2354150.,
      2455150., 2475350., 2576350., 2596550., 2697550., 2717750.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186402.,  187500.,  257400.,  258960.,  332190.,  334260.,  365790.,
      368100.,  297144.,  299088.,  225858.,  227388.,  319864.,  321904.,
      432672.,  435520.,  547720.,  551440.,  586120.,  590160.,  469280.,
      472640.,  351736.,  354352.,  469790.,  473060.,  627080.,  631600.,
      783650.,  789500.,  823650.,  829900.,  652360.,  657520.,  483710.,
      487700.,  625310.,  630020.,  826760.,  833200.,  1023650., 1031900.,
      1063650., 1072300., 836680.,  843760.,  616190.,  621620.,  780830.,
      786980.,  1026440., 1034800., 1263650., 1274300., 1303650., 1314700.,
      1021000., 1030000., 748670.,  755540.,  936350.,  943940.,  1226120.,
      1236400., 1503650., 1516700., 1543650., 1557100., 1205320., 1216240.,
      881150.,  889460.,  643768.,  650416.,  834848.,  843840.,  1013320.,
      1024720., 1038920., 1050640., 801824.,  811328.,  578872.,  586096.,
      392322.,  397740.,  501240.,  508560.,  598590.,  607860.,  612990.,
      622500.,  464184.,  471888.,  328098.,  333948.,  1209378., 1217388.,
      1584504., 1595280., 1944990., 1958580., 1978590., 1992420., 1550520.,
      1561680., 1138242., 1146684., 1499512., 1510768., 1956384., 1971520.,
      2390920., 2410000., 2429320., 2448720., 1894688., 1910336., 1383928.,
      1395760., 1713950., 1728740., 2224520., 2244400., 2703650., 2728700.,
      2743650., 2769100., 2126920., 2147440., 1543550., 1559060., 1869470.,
      1885700., 2424200., 2446000., 2943650., 2971100., 2983650., 3011500.,
      2311240., 2333680., 1676030., 1692980., 2024990., 2042660., 2623880.,
      2647600., 3183650., 3213500., 3223650., 3253900., 2495560., 2519920.,
      1808510., 1826900., 2180510., 2199620., 2823560., 2849200., 3423650.,
      3455900., 3463650., 3496300., 2679880., 2706160., 1940990., 1960820.,
      1454776., 1470640., 1867040., 1888320., 2242120., 2268880., 2267720.,
      2294800., 1735712., 1757504., 1242424., 1258864., 862338.,  874668.,
      1091064., 1107600., 1289790., 1310580., 1304190., 1325220., 980280.,
      997200.,  687522.,  700284.,  2232354., 2247276., 2911608., 2931600.,
      3557790., 3582900., 3591390., 3616740., 2803896., 2824272., 2050626.,
      2065980., 2679160., 2699632., 3480096., 3507520., 4234120., 4268560.,
      4272520., 4307280., 3320096., 3348032., 2416120., 2437168., 2958110.,
      2984420., 3821960., 3857200., 4623650., 4667900., 4663650., 4708300.,
      3601480., 3637360., 2603390., 2630420., 3113630., 3141380., 4021640.,
      4058800., 4863650., 4910300., 4903650., 4950700., 3785800., 3823600.,
      2735870., 2764340., 3269150., 3298340., 4221320., 4260400., 5103650.,
      5152700., 5143650., 5193100., 3970120., 4009840., 2868350., 2898260.,
      3424670., 3455300., 4421000., 4462000., 5343650., 5395100., 5383650.,
      5435500., 4154440., 4196080., 3000830., 3032180., 2265784., 2290864.,
      2899232., 2932800., 3470920., 3513040., 3496520., 3538960., 2669600.,
      2703680., 1905976., 1931632., 1332354., 1351596., 1680888., 1706640.,
      1980990., 2013300., 1995390., 2027940., 1496376., 1522512., 1046946.,
      1066620.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      783650.,  789500.,  823650.,  829900.,  1023650., 1031900., 1063650.,
      1072300., 1263650., 1274300., 1303650., 1314700., 1503650., 1516700.,
      1543650., 1557100., 2703650., 2728700., 2743650., 2769100., 2943650.,
      2971100., 2983650., 3011500., 3183650., 3213500., 3223650., 3253900.,
      3423650., 3455900., 3463650., 3496300., 4623650., 4667900., 4663650.,
      4708300., 4863650., 4910300., 4903650., 4950700., 5103650., 5152700.,
      5143650., 5193100., 5343650., 5395100., 5383650., 5435500.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371706.,   372804.,   373902.,   375000.,   513240.,   514800.,
      516360.,   517920.,   662310.,   664380.,   666450.,   668520.,
      729270.,   731580.,   733890.,   736200.,   592344.,   594288.,
      596232.,   598176.,   450186.,   451716.,   453246.,   454776.,
      637688.,   639728.,   641768.,   643808.,   862496.,   865344.,
      868192.,   871040.,   1091720.,  1095440.,  1099160.,  1102880.,
      1168200.,  1172240.,  1176280.,  1180320.,  935200.,   938560.,
      941920.,   945280.,   700856.,   703472.,   706088.,   708704.,
      936310.,   939580.,   942850.,   946120.,   1249640.,  1254160.,
      1258680.,  1263200.,  1561450.,  1567300.,  1573150.,  1579000.,
      1641050.,  1647300.,  1653550.,  1659800.,  1299560.,  1304720.,
      1309880.,  1315040.,  963430.,   967420.,   971410.,   975400.,
      1245910.,  1250620.,  1255330.,  1260040.,  1647080.,  1653520.,
      1659960.,  1666400.,  2039050.,  2047300.,  2055550.,  2063800.,
      2118650.,  2127300.,  2135950.,  2144600.,  1666280.,  1673360.,
      1680440.,  1687520.,  1226950.,  1232380.,  1237810.,  1243240.,
      1555510.,  1561660.,  1567810.,  1573960.,  2044520.,  2052880.,
      2061240.,  2069600.,  2516650.,  2527300.,  2537950.,  2548600.,
      2596250.,  2607300.,  2618350.,  2629400.,  2033000.,  2042000.,
      2051000.,  2060000.,  1490470.,  1497340.,  1504210.,  1511080.,
      1865110.,  1872700.,  1880290.,  1887880.,  2441960.,  2452240.,
      2462520.,  2472800.,  2994250.,  3007300.,  3020350.,  3033400.,
      3073850.,  3087300.,  3100750.,  3114200.,  2399720.,  2410640.,
      2421560.,  2432480.,  1753990.,  1762300.,  1770610.,  1778920.,
      1280888.,  1287536.,  1294184.,  1300832.,  1660704.,  1669696.,
      1678688.,  1687680.,  2015240.,  2026640.,  2038040.,  2049440.,
      2066120.,  2077840.,  2089560.,  2101280.,  1594144.,  1603648.,
      1613152.,  1622656.,  1150520.,  1157744.,  1164968.,  1172192.,
      779226.,   784644.,   790062.,   795480.,   995160.,   1002480.,
      1009800.,  1017120.,  1187910.,  1197180.,  1206450.,  1215720.,
      1216470.,  1225980.,  1235490.,  1245000.,  920664.,   928368.,
      936072.,   943776.,   650346.,   656196.,   662046.,   667896.,
      2410746.,  2418756.,  2426766.,  2434776.,  3158232.,  3169008.,
      3179784.,  3190560.,  3876390.,  3889980.,  3903570.,  3917160.,
      3943350.,  3957180.,  3971010.,  3984840.,  3089880.,  3101040.,
      3112200.,  3123360.,  2268042.,  2276484.,  2284926.,  2293368.,
      2987768.,  2999024.,  3010280.,  3021536.,  3897632.,  3912768.,
      3927904.,  3943040.,  4762760.,  4781840.,  4800920.,  4820000.,
      4839240.,  4858640.,  4878040.,  4897440.,  3773728.,  3789376.,
      3805024.,  3820672.,  2756024.,  2767856.,  2779688.,  2791520.,
      3413110.,  3427900.,  3442690.,  3457480.,  4429160.,  4449040.,
      4468920.,  4488800.,  5382250.,  5407300.,  5432350.,  5457400.,
      5461850.,  5487300.,  5512750.,  5538200.,  4233320.,  4253840.,
      4274360.,  4294880.,  3071590.,  3087100.,  3102610.,  3118120.,
      3722710.,  3738940.,  3755170.,  3771400.,  4826600.,  4848400.,
      4870200.,  4892000.,  5859850.,  5887300.,  5914750.,  5942200.,
      5939450.,  5967300.,  5995150.,  6023000.,  4600040.,  4622480.,
      4644920.,  4667360.,  3335110.,  3352060.,  3369010.,  3385960.,
      4032310.,  4049980.,  4067650.,  4085320.,  5224040.,  5247760.,
      5271480.,  5295200.,  6337450.,  6367300.,  6397150.,  6427000.,
      6417050.,  6447300.,  6477550.,  6507800.,  4966760.,  4991120.,
      5015480.,  5039840.,  3598630.,  3617020.,  3635410.,  3653800.,
      4341910.,  4361020.,  4380130.,  4399240.,  5621480.,  5647120.,
      5672760.,  5698400.,  6815050.,  6847300.,  6879550.,  6911800.,
      6894650.,  6927300.,  6959950.,  6992600.,  5333480.,  5359760.,
      5386040.,  5412320.,  3862150.,  3881980.,  3901810.,  3921640.,
      2893688.,  2909552.,  2925416.,  2941280.,  3712800.,  3734080.,
      3755360.,  3776640.,  4457480.,  4484240.,  4511000.,  4537760.,
      4508360.,  4535440.,  4562520.,  4589600.,  3449632.,  3471424.,
      3493216.,  3515008.,  2468408.,  2484848.,  2501288.,  2517728.,
      1712346.,  1724676.,  1737006.,  1749336.,  2165592.,  2182128.,
      2198664.,  2215200.,  2558790.,  2579580.,  2600370.,  2621160.,
      2587350.,  2608380.,  2629410.,  2650440.,  1943640.,  1960560.,
      1977480.,  1994400.,  1362282.,  1375044.,  1387806.,  1400568.,
      4449786.,  4464708.,  4479630.,  4494552.,  5803224.,  5823216.,
      5843208.,  5863200.,  7090470.,  7115580.,  7140690.,  7165800.,
      7157430.,  7182780.,  7208130.,  7233480.,  5587416.,  5607792.,
      5628168.,  5648544.,  4085898.,  4101252.,  4116606.,  4131960.,
      5337848.,  5358320.,  5378792.,  5399264.,  6932768.,  6960192.,
      6987616.,  7015040.,  8433800.,  8468240.,  8502680.,  8537120.,
      8510280.,  8545040.,  8579800.,  8614560.,  6612256.,  6640192.,
      6668128.,  6696064.,  4811192.,  4832240.,  4853288.,  4874336.,
      5889910.,  5916220.,  5942530.,  5968840.,  7608680.,  7643920.,
      7679160.,  7714400.,  9203050.,  9247300.,  9291550.,  9335800.,
      9282650.,  9327300.,  9371950.,  9416600.,  7167080.,  7202960.,
      7238840.,  7274720.,  5179750.,  5206780.,  5233810.,  5260840.,
      6199510.,  6227260.,  6255010.,  6282760.,  8006120.,  8043280.,
      8080440.,  8117600.,  9680650.,  9727300.,  9773950.,  9820600.,
      9760250.,  9807300.,  9854350.,  9901400.,  7533800.,  7571600.,
      7609400.,  7647200.,  5443270.,  5471740.,  5500210.,  5528680.,
      6509110.,  6538300.,  6567490.,  6596680.,  8403560.,  8442640.,
      8481720.,  8520800.,  10158250., 10207300., 10256350., 10305400.,
      10237850., 10287300., 10336750., 10386200., 7900520.,  7940240.,
      7979960.,  8019680.,  5706790.,  5736700.,  5766610.,  5796520.,
      6818710.,  6849340.,  6879970.,  6910600.,  8801000.,  8842000.,
      8883000.,  8924000.,  10635850., 10687300., 10738750., 10790200.,
      10715450., 10767300., 10819150., 10871000., 8267240.,  8308880.,
      8350520.,  8392160.,  5970310.,  6001660.,  6033010.,  6064360.,
      4506488.,  4531568.,  4556648.,  4581728.,  5764896.,  5798464.,
      5832032.,  5865600.,  6899720.,  6941840.,  6983960.,  7026080.,
      6950600.,  6993040.,  7035480.,  7077920.,  5305120.,  5339200.,
      5373280.,  5407360.,  3786296.,  3811952.,  3837608.,  3863264.,
      2645466.,  2664708.,  2683950.,  2703192.,  3336024.,  3361776.,
      3387528.,  3413280.,  3929670.,  3961980.,  3994290.,  4026600.,
      3958230.,  3990780.,  4023330.,  4055880.,  2966616.,  2992752.,
      3018888.,  3045024.,  2074218.,  2093892.,  2113566.,  2133240.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1561450.,  1567300.,  1573150.,  1579000.,  1641050.,  1647300.,
      1653550.,  1659800.,  2039050.,  2047300.,  2055550.,  2063800.,
      2118650.,  2127300.,  2135950.,  2144600.,  2516650.,  2527300.,
      2537950.,  2548600.,  2596250.,  2607300.,  2618350.,  2629400.,
      2994250.,  3007300.,  3020350.,  3033400.,  3073850.,  3087300.,
      3100750.,  3114200.,  5382250.,  5407300.,  5432350.,  5457400.,
      5461850.,  5487300.,  5512750.,  5538200.,  5859850.,  5887300.,
      5914750.,  5942200.,  5939450.,  5967300.,  5995150.,  6023000.,
      6337450.,  6367300.,  6397150.,  6427000.,  6417050.,  6447300.,
      6477550.,  6507800.,  6815050.,  6847300.,  6879550.,  6911800.,
      6894650.,  6927300.,  6959950.,  6992600.,  9203050.,  9247300.,
      9291550.,  9335800.,  9282650.,  9327300.,  9371950.,  9416600.,
      9680650.,  9727300.,  9773950.,  9820600.,  9760250.,  9807300.,
      9854350.,  9901400.,  10158250., 10207300., 10256350., 10305400.,
      10237850., 10287300., 10336750., 10386200., 10635850., 10687300.,
      10738750., 10790200., 10715450., 10767300., 10819150., 10871000.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755.,  2404.,  3080.,  3350.,  3620.,  2920.,  2205.,  3008.,  4048.,
      5100.,  5410.,  5720.,  4560.,  3404.,  4420.,  5880.,  7325.,  7650.,
      7975.,  6300.,  4660.,  5890.,  7770.,  9600.,  9925.,  10250., 8050.,
      5920.,  7360.,  9660.,  11875., 12200., 12525., 9800.,  7180.,  8830.,
      11550., 14150., 14475., 14800., 11550., 8440.,  6122.,  7936.,  9630.,
      9840.,  10050., 7760.,  5606.,  3780.,  4834.,  5780.,  5900.,  6020.,
      4570.,  3240.,  11331., 14836., 18200., 18470., 18740., 14680., 10773.,
      14096., 18384., 22460., 22770., 23080., 18000., 13148., 16180., 21000.,
      25525., 25850., 26175., 20300., 14740., 17650., 22890., 27800., 28125.,
      28450., 22050., 16000., 19120., 24780., 30075., 30400., 30725., 23800.,
      17260., 20590., 26670., 32350., 32675., 33000., 25550., 18520., 13850.,
      17792., 21390., 21600., 21810., 16720., 11990., 8316.,  10546., 12500.,
      12620., 12740., 9610.,  6768.,  20907., 27268., 33320., 33590., 33860.,
      26440., 19341., 25184., 32720., 39820., 40130., 40440., 31440., 22892.,
      27940., 36120., 43725., 44050., 44375., 34300., 24820., 29410., 38010.,
      46000., 46325., 46650., 36050., 26080., 30880., 39900., 48275., 48600.,
      48925., 37800., 27340., 32350., 41790., 50550., 50875., 51200., 39550.,
      28600., 21578., 27648., 33150., 33360., 33570., 25680., 18374., 12852.,
      16258., 19220., 19340., 19460., 14650., 10296.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7325.,  7650.,  7975.,  9600.,  9925.,  10250., 11875., 12200., 12525.,
      14150., 14475., 14800., 25525., 25850., 26175., 27800., 28125., 28450.,
      30075., 30400., 30725., 32350., 32675., 33000., 43725., 44050., 44375.,
      46000., 46325., 46650., 48275., 48600., 48925., 50550., 50875., 51200.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  4694.,   4808.,  6010.,   6160.,  6535.,   6700.,  7060.,
      7240.,  5690.,  5840.,   4293.,  4410.,   5866.,  6016.,   7888.,  8096.,
      9930.,  10200., 10530.,  10820., 11130.,  11440., 8864.,   9120.,  6610.,
      6808.,  8600.,  8840.,   11430., 11760.,  14225., 14650.,  14850., 15300.,
      15475., 15950., 12210.,  12600., 9020.,   9320.,  11435.,  11780., 15070.,
      15540., 18600., 19200.,  19225., 19850.,  19850., 20500.,  15570., 16100.,
      11435., 11840., 14270.,  14720., 18710.,  19320., 22975.,  23750., 23600.,
      24400., 24225., 25050.,  18930., 19600.,  13850., 14360.,  17105., 17660.,
      22350., 23100., 27350.,  28300., 27975.,  28950., 28600.,  29600., 22290.,
      23100., 16265., 16880.,  11758., 12244.,  15216., 15872.,  18430., 19260.,
      18830., 19680., 19230.,  20100., 14816.,  15520., 10678.,  11212., 7164.,
      7560.,  9134.,  9668.,   10885., 11560.,  11110., 11800.,  11335., 12040.,
      8570.,  9140.,  6048.,   6480.,  22077.,  22662., 28886.,  29672., 35410.,
      36400., 35935., 36940.,  36460., 37480.,  28538., 29360.,  20925., 21546.,
      27370., 28192., 35664.,  36768., 43530.,  44920., 44130.,  45540., 44730.,
      46160., 34848., 36000.,  25426., 26296.,  31280., 32360.,  40550., 42000.,
      49225., 51050., 49850.,  51700., 50475.,  52350., 39090.,  40600., 28340.,
      29480., 34115., 35300.,  44190., 45780.,  53600., 55600.,  54225., 56250.,
      54850., 56900., 42450.,  44100., 30755.,  32000., 36950.,  38240., 47830.,
      49560., 57975., 60150.,  58600., 60800.,  59225., 61450.,  45810., 47600.,
      33170., 34520., 39785.,  41180., 51470.,  53340., 62350.,  64700., 62975.,
      65350., 63600., 66000.,  49170., 51100.,  35585., 37040.,  26542., 27700.,
      34032., 35584., 40830.,  42780., 41230.,  43200., 41630.,  43620., 31840.,
      33440., 22774., 23980.,  15732., 16632.,  19886., 21092.,  23485., 25000.,
      23710., 25240., 23935.,  25480., 17978.,  19220., 12600.,  13536., 40725.,
      41814., 53078., 54536.,  64810., 66640.,  65335., 67180.,  65860., 67720.,
      51386., 52880., 37557.,  38682., 48874.,  50368., 63440.,  65440., 77130.,
      79640., 77730., 80260.,  78330., 80880.,  60832., 62880.,  44242., 45784.,
      53960., 55880., 69670.,  72240., 84225.,  87450., 84850.,  88100., 85475.,
      88750., 65970., 68600.,  47660., 49640.,  56795., 58820.,  73310., 76020.,
      88600., 92000., 89225.,  92650., 89850.,  93300., 69330.,  72100., 50075.,
      52160., 59630., 61760.,  76950., 79800.,  92975., 96550.,  93600., 97200.,
      94225., 97850., 72690.,  75600., 52490.,  54680., 62465.,  64700., 80590.,
      83580., 97350., 101100., 97975., 101750., 98600., 102400., 76050., 79100.,
      54905., 57200., 41326.,  43156., 52848.,  55296., 63230.,  66300., 63630.,
      66720., 64030., 67140.,  48864., 51360.,  34870., 36748.,  24300., 25704.,
      30638., 32516., 36085.,  38440., 36310.,  38680., 36535.,  38920., 27386.,
      29300., 19152., 20592.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225., 14650., 14850., 15300.,  15475., 15950.,  18600., 19200.,
      19225., 19850., 19850., 20500.,  22975., 23750.,  23600., 24400.,
      24225., 25050., 27350., 28300.,  27975., 28950.,  28600., 29600.,
      49225., 51050., 49850., 51700.,  50475., 52350.,  53600., 55600.,
      54225., 56250., 54850., 56900.,  57975., 60150.,  58600., 60800.,
      59225., 61450., 62350., 64700.,  62975., 65350.,  63600., 66000.,
      84225., 87450., 84850., 88100.,  85475., 88750.,  88600., 92000.,
      89225., 92650., 89850., 93300.,  92975., 96550.,  93600., 97200.,
      94225., 97850., 97350., 101100., 97975., 101750., 98600., 102400.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,   6858.,   6939.,   7020.,   9274.,   9388.,   9502.,   9616.,
      11870.,  12020.,  12170.,  12320.,  12905.,  13070.,  13235.,  13400.,
      13940.,  14120.,  14300.,  14480.,  11230.,  11380.,  11530.,  11680.,
      8469.,   8586.,   8703.,   8820.,   11582.,  11732.,  11882.,  12032.,
      15568.,  15776.,  15984.,  16192.,  19590.,  19860.,  20130.,  20400.,
      20770.,  21060.,  21350.,  21640.,  21950.,  22260.,  22570.,  22880.,
      17472.,  17728.,  17984.,  18240.,  13022.,  13220.,  13418.,  13616.,
      16960.,  17200.,  17440.,  17680.,  22530.,  22860.,  23190.,  23520.,
      28025.,  28450.,  28875.,  29300.,  29250.,  29700.,  30150.,  30600.,
      30475.,  30950.,  31425.,  31900.,  24030.,  24420.,  24810.,  25200.,
      17740.,  18040.,  18340.,  18640.,  22525.,  22870.,  23215.,  23560.,
      29670.,  30140.,  30610.,  31080.,  36600.,  37200.,  37800.,  38400.,
      37825.,  38450.,  39075.,  39700.,  39050.,  39700.,  40350.,  41000.,
      30610.,  31140.,  31670.,  32200.,  22465.,  22870.,  23275.,  23680.,
      28090.,  28540.,  28990.,  29440.,  36810.,  37420.,  38030.,  38640.,
      45175.,  45950.,  46725.,  47500.,  46400.,  47200.,  48000.,  48800.,
      47625.,  48450.,  49275.,  50100.,  37190.,  37860.,  38530.,  39200.,
      27190.,  27700.,  28210.,  28720.,  33655.,  34210.,  34765.,  35320.,
      43950.,  44700.,  45450.,  46200.,  53750.,  54700.,  55650.,  56600.,
      54975.,  55950.,  56925.,  57900.,  56200.,  57200.,  58200.,  59200.,
      43770.,  44580.,  45390.,  46200.,  31915.,  32530.,  33145.,  33760.,
      23030.,  23516.,  24002.,  24488.,  29776.,  30432.,  31088.,  31744.,
      36030.,  36860.,  37690.,  38520.,  36810.,  37660.,  38510.,  39360.,
      37590.,  38460.,  39330.,  40200.,  28928.,  29632.,  30336.,  31040.,
      20822.,  21356.,  21890.,  22424.,  13932.,  14328.,  14724.,  15120.,
      17734.,  18268.,  18802.,  19336.,  21095.,  21770.,  22445.,  23120.,
      21530.,  22220.,  22910.,  23600.,  21965.,  22670.,  23375.,  24080.,
      16570.,  17140.,  17710.,  18280.,  11664.,  12096.,  12528.,  12960.,
      43569.,  44154.,  44739.,  45324.,  56986.,  57772.,  58558.,  59344.,
      69830.,  70820.,  71810.,  72800.,  70865.,  71870.,  72875.,  73880.,
      71900.,  72920.,  73940.,  74960.,  56254.,  57076.,  57898.,  58720.,
      41229.,  41850.,  42471.,  43092.,  53918.,  54740.,  55562.,  56384.,
      70224.,  71328.,  72432.,  73536.,  85670.,  87060.,  88450.,  89840.,
      86850.,  88260.,  89670.,  91080.,  88030.,  89460.,  90890.,  92320.,
      68544.,  69696.,  70848.,  72000.,  49982.,  50852.,  51722.,  52592.,
      61480.,  62560.,  63640.,  64720.,  79650.,  81100.,  82550.,  84000.,
      96625.,  98450.,  100275., 102100., 97850.,  99700.,  101550., 103400.,
      99075.,  100950., 102825., 104700., 76670.,  78180.,  79690.,  81200.,
      55540.,  56680.,  57820.,  58960.,  67045.,  68230.,  69415.,  70600.,
      86790.,  88380.,  89970.,  91560.,  105200., 107200., 109200., 111200.,
      106425., 108450., 110475., 112500., 107650., 109700., 111750., 113800.,
      83250.,  84900.,  86550.,  88200.,  60265.,  61510.,  62755.,  64000.,
      72610.,  73900.,  75190.,  76480.,  93930.,  95660.,  97390.,  99120.,
      113775., 115950., 118125., 120300., 115000., 117200., 119400., 121600.,
      116225., 118450., 120675., 122900., 89830.,  91620.,  93410.,  95200.,
      64990.,  66340.,  67690.,  69040.,  78175.,  79570.,  80965.,  82360.,
      101070., 102940., 104810., 106680., 122350., 124700., 127050., 129400.,
      123575., 125950., 128325., 130700., 124800., 127200., 129600., 132000.,
      96410.,  98340.,  100270., 102200., 69715.,  71170.,  72625.,  74080.,
      51926.,  53084.,  54242.,  55400.,  66512.,  68064.,  69616.,  71168.,
      79710.,  81660.,  83610.,  85560.,  80490.,  82460.,  84430.,  86400.,
      81270.,  83260.,  85250.,  87240.,  62080.,  63680.,  65280.,  66880.,
      44342.,  45548.,  46754.,  47960.,  30564.,  31464.,  32364.,  33264.,
      38566.,  39772.,  40978.,  42184.,  45455.,  46970.,  48485.,  50000.,
      45890.,  47420.,  48950.,  50480.,  46325.,  47870.,  49415.,  50960.,
      34714.,  35956.,  37198.,  38440.,  24264.,  25200.,  26136.,  27072.,
      80361.,  81450.,  82539.,  83628.,  104698., 106156., 107614., 109072.,
      127790., 129620., 131450., 133280., 128825., 130670., 132515., 134360.,
      129860., 131720., 133580., 135440., 101278., 102772., 104266., 105760.,
      73989.,  75114.,  76239.,  77364.,  96254.,  97748.,  99242.,  100736.,
      124880., 126880., 128880., 130880., 151750., 154260., 156770., 159280.,
      152930., 155460., 157990., 160520., 154110., 156660., 159210., 161760.,
      119616., 121664., 123712., 125760., 86942.,  88484.,  90026.,  91568.,
      106000., 107920., 109840., 111760., 136770., 139340., 141910., 144480.,
      165225., 168450., 171675., 174900., 166450., 169700., 172950., 176200.,
      167675., 170950., 174225., 177500., 129310., 131940., 134570., 137200.,
      93340.,  95320.,  97300.,  99280.,  111565., 113590., 115615., 117640.,
      143910., 146620., 149330., 152040., 173800., 177200., 180600., 184000.,
      175025., 178450., 181875., 185300., 176250., 179700., 183150., 186600.,
      135890., 138660., 141430., 144200., 98065.,  100150., 102235., 104320.,
      117130., 119260., 121390., 123520., 151050., 153900., 156750., 159600.,
      182375., 185950., 189525., 193100., 183600., 187200., 190800., 194400.,
      184825., 188450., 192075., 195700., 142470., 145380., 148290., 151200.,
      102790., 104980., 107170., 109360., 122695., 124930., 127165., 129400.,
      158190., 161180., 164170., 167160., 190950., 194700., 198450., 202200.,
      192175., 195950., 199725., 203500., 193400., 197200., 201000., 204800.,
      149050., 152100., 155150., 158200., 107515., 109810., 112105., 114400.,
      80822.,  82652.,  84482.,  86312.,  103248., 105696., 108144., 110592.,
      123390., 126460., 129530., 132600., 124170., 127260., 130350., 133440.,
      124950., 128060., 131170., 134280., 95232.,  97728.,  100224., 102720.,
      67862.,  69740.,  71618.,  73496.,  47196.,  48600.,  50004.,  51408.,
      59398.,  61276.,  63154.,  65032.,  69815.,  72170.,  74525.,  76880.,
      70250.,  72620.,  74990.,  77360.,  70685.,  73070.,  75455.,  77840.,
      52858.,  54772.,  56686.,  58600.,  36864.,  38304.,  39744.,  41184.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025.,  28450.,  28875.,  29300.,  29250.,  29700.,  30150.,  30600.,
      30475.,  30950.,  31425.,  31900.,  36600.,  37200.,  37800.,  38400.,
      37825.,  38450.,  39075.,  39700.,  39050.,  39700.,  40350.,  41000.,
      45175.,  45950.,  46725.,  47500.,  46400.,  47200.,  48000.,  48800.,
      47625.,  48450.,  49275.,  50100.,  53750.,  54700.,  55650.,  56600.,
      54975.,  55950.,  56925.,  57900.,  56200.,  57200.,  58200.,  59200.,
      96625.,  98450.,  100275., 102100., 97850.,  99700.,  101550., 103400.,
      99075.,  100950., 102825., 104700., 105200., 107200., 109200., 111200.,
      106425., 108450., 110475., 112500., 107650., 109700., 111750., 113800.,
      113775., 115950., 118125., 120300., 115000., 117200., 119400., 121600.,
      116225., 118450., 120675., 122900., 122350., 124700., 127050., 129400.,
      123575., 125950., 128325., 130700., 124800., 127200., 129600., 132000.,
      165225., 168450., 171675., 174900., 166450., 169700., 172950., 176200.,
      167675., 170950., 174225., 177500., 173800., 177200., 180600., 184000.,
      175025., 178450., 181875., 185300., 176250., 179700., 183150., 186600.,
      182375., 185950., 189525., 193100., 183600., 187200., 190800., 194400.,
      184825., 188450., 192075., 195700., 190950., 194700., 198450., 202200.,
      192175., 195950., 199725., 203500., 193400., 197200., 201000., 204800.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13545.,  18572.,  23815.,  25945.,  28075.,  22652.,  17109.,  23380.,
      31472.,  39660.,  42100.,  44540.,  35504.,  26500.,  34475.,  45860.,
      57125.,  59675.,  62225.,  49140.,  36335.,  46025.,  60700.,  74975.,
      77525.,  80075.,  62860.,  46205.,  57575.,  75540.,  92825.,  95375.,
      97925.,  76580.,  56075.,  69125.,  90380.,  110675., 113225., 115775.,
      90300.,  65945.,  47740.,  61840.,  74980.,  76620.,  78260.,  60368.,
      43564.,  29295.,  37412.,  44665.,  45595.,  46525.,  35252.,  24939.,
      89145.,  116684., 143095., 145225., 147355., 115388., 84645.,  110740.,
      144368., 176300., 178740., 181180., 141232., 103108., 126875., 164580.,
      199925., 202475., 205025., 158900., 115295., 138425., 179420., 217775.,
      220325., 222875., 172620., 125165., 149975., 194260., 235625., 238175.,
      240725., 186340., 135035., 161525., 209100., 253475., 256025., 258575.,
      200060., 144905., 108220., 138896., 166820., 168460., 170100., 130256.,
      93292.,  64575.,  81764.,  96745.,  97675.,  98605.,  74228.,  52155.,
      164745., 214796., 262375., 264505., 266635., 208124., 152181., 198100.,
      257264., 312940., 315380., 317820., 246960., 179716., 219275., 283300.,
      342725., 345275., 347825., 268660., 194255., 230825., 298140., 360575.,
      363125., 365675., 282380., 204125., 242375., 312980., 378425., 380975.,
      383525., 296100., 213995., 253925., 327820., 396275., 398825., 401375.,
      309820., 223865., 168700., 215952., 258660., 260300., 261940., 200144.,
      143020., 99855.,  126116., 148825., 149755., 150685., 113204., 79371.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      57125.,  59675.,  62225.,  74975.,  77525.,  80075.,  92825.,  95375.,
      97925.,  110675., 113225., 115775., 199925., 202475., 205025., 217775.,
      220325., 222875., 235625., 238175., 240725., 253475., 256025., 258575.,
      342725., 345275., 347825., 360575., 363125., 365675., 378425., 380975.,
      383525., 396275., 398825., 401375.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26775.,  27090.,  36700.,  37144.,  47045.,  47630.,  51245.,  51890.,
      55445.,  56150.,  44716.,  45304.,  33759.,  34218.,  46172.,  46760.,
      62128.,  62944.,  78260.,  79320.,  83060.,  84200.,  87860.,  89080.,
      70000.,  71008.,  52220.,  53000.,  68005.,  68950.,  90420.,  91720.,
      112575., 114250., 117575., 119350., 122575., 124450., 96740.,  98280.,
      71485.,  72670.,  90685.,  92050.,  119540., 121400., 147575., 149950.,
      152575., 155050., 157575., 160150., 123620., 125720., 90805.,  92410.,
      113365., 115150., 148660., 151080., 182575., 185650., 187575., 190750.,
      192575., 195850., 150500., 153160., 110125., 112150., 136045., 138250.,
      177780., 180760., 217575., 221350., 222575., 226450., 227575., 231550.,
      177380., 180600., 129445., 131890., 93548.,  95480.,  121072., 123680.,
      146660., 149960., 149860., 153240., 153060., 156520., 117936., 120736.,
      85004.,  87128.,  57015.,  58590.,  72700.,  74824.,  86645.,  89330.,
      88445.,  91190.,  90245.,  93050.,  68236.,  70504.,  48159.,  49878.,
      175959., 178290., 230236., 233368., 282245., 286190., 286445., 290450.,
      290645., 294710., 227500., 230776., 166815., 169290., 218204., 221480.,
      284336., 288736., 347060., 352600., 351860., 357480., 356660., 362360.,
      277872., 282464., 202748., 206216., 249445., 253750., 323380., 329160.,
      392575., 399850., 397575., 404950., 402575., 410050., 311780., 317800.,
      226045., 230590., 272125., 276850., 352500., 358840., 427575., 435550.,
      432575., 440650., 437575., 445750., 338660., 345240., 245365., 250330.,
      294805., 299950., 381620., 388520., 462575., 471250., 467575., 476350.,
      472575., 481450., 365540., 372680., 264685., 270070., 317485., 323050.,
      410740., 418200., 497575., 506950., 502575., 512050., 507575., 517150.,
      392420., 400120., 284005., 289810., 211820., 216440., 271600., 277792.,
      325860., 333640., 329060., 336920., 332260., 340200., 254128., 260512.,
      181772., 186584., 125559., 129150., 158716., 163528., 187445., 193490.,
      189245., 195350., 191045., 197210., 143500., 148456., 100575., 104310.,
      325143., 329490., 423772., 429592., 517445., 524750., 521645., 529010.,
      525845., 533270., 410284., 416248., 299871., 304362., 390236., 396200.,
      506544., 514528., 615860., 625880., 620660., 630760., 625460., 635640.,
      485744., 493920., 353276., 359432., 430885., 438550., 556340., 566600.,
      672575., 685450., 677575., 690550., 682575., 695650., 526820., 537320.,
      380605., 388510., 453565., 461650., 585460., 596280., 707575., 721150.,
      712575., 726250., 717575., 731350., 553700., 564760., 399925., 408250.,
      476245., 484750., 614580., 625960., 742575., 756850., 747575., 761950.,
      752575., 767050., 580580., 592200., 419245., 427990., 498925., 507850.,
      643700., 655640., 777575., 792550., 782575., 797650., 787575., 802750.,
      607460., 619640., 438565., 447730., 330092., 337400., 422128., 431904.,
      505060., 517320., 508260., 520600., 511460., 523880., 390320., 400288.,
      278540., 286040., 194103., 199710., 244732., 252232., 288245., 297650.,
      290045., 299510., 291845., 301370., 218764., 226408., 152991., 158742.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      112575., 114250., 117575., 119350., 122575., 124450., 147575., 149950.,
      152575., 155050., 157575., 160150., 182575., 185650., 187575., 190750.,
      192575., 195850., 217575., 221350., 222575., 226450., 227575., 231550.,
      392575., 399850., 397575., 404950., 402575., 410050., 427575., 435550.,
      432575., 440650., 437575., 445750., 462575., 471250., 467575., 476350.,
      472575., 481450., 497575., 506950., 502575., 512050., 507575., 517150.,
      672575., 685450., 677575., 690550., 682575., 695650., 707575., 721150.,
      712575., 726250., 717575., 731350., 742575., 756850., 747575., 761950.,
      752575., 767050., 777575., 792550., 782575., 797650., 787575., 802750.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53235.,   53550.,   53865.,   54180.,   72956.,   73400.,   73844.,
      74288.,   93505.,   94090.,   94675.,   95260.,   101845.,  102490.,
      103135.,  103780.,  110185.,  110890.,  111595.,  112300.,  88844.,
      89432.,   90020.,   90608.,   67059.,   67518.,   67977.,   68436.,
      91756.,   92344.,   92932.,   93520.,   123440.,  124256.,  125072.,
      125888.,  155460.,  156520.,  157580.,  158640.,  164980.,  166120.,
      167260.,  168400.,  174500.,  175720.,  176940.,  178160.,  138992.,
      140000.,  141008.,  142016.,  103660.,  104440.,  105220.,  106000.,
      135065.,  136010.,  136955.,  137900.,  179540.,  180840.,  182140.,
      183440.,  223475.,  225150.,  226825.,  228500.,  233375.,  235150.,
      236925.,  238700.,  243275.,  245150.,  247025.,  248900.,  191940.,
      193480.,  195020.,  196560.,  141785.,  142970.,  144155.,  145340.,
      180005.,  181370.,  182735.,  184100.,  237220.,  239080.,  240940.,
      242800.,  292775.,  295150.,  297525.,  299900.,  302675.,  305150.,
      307625.,  310100.,  312575.,  315150.,  317725.,  320300.,  245140.,
      247240.,  249340.,  251440.,  180005.,  181610.,  183215.,  184820.,
      224945.,  226730.,  228515.,  230300.,  294900.,  297320.,  299740.,
      302160.,  362075.,  365150.,  368225.,  371300.,  371975.,  375150.,
      378325.,  381500.,  381875.,  385150.,  388425.,  391700.,  298340.,
      301000.,  303660.,  306320.,  218225.,  220250.,  222275.,  224300.,
      269885.,  272090.,  274295.,  276500.,  352580.,  355560.,  358540.,
      361520.,  431375.,  435150.,  438925.,  442700.,  441275.,  445150.,
      449025.,  452900.,  451175.,  455150.,  459125.,  463100.,  351540.,
      354760.,  357980.,  361200.,  256445.,  258890.,  261335.,  263780.,
      185164.,  187096.,  189028.,  190960.,  239536.,  242144.,  244752.,
      247360.,  290020.,  293320.,  296620.,  299920.,  296340.,  299720.,
      303100.,  306480.,  302660.,  306120.,  309580.,  313040.,  233072.,
      235872.,  238672.,  241472.,  167884.,  170008.,  172132.,  174256.,
      112455.,  114030.,  115605.,  117180.,  143276.,  145400.,  147524.,
      149648.,  170605.,  173290.,  175975.,  178660.,  174145.,  176890.,
      179635.,  182380.,  177685.,  180490.,  183295.,  186100.,  134204.,
      136472.,  138740.,  141008.,  94599.,   96318.,   98037.,   99756.,
      349587.,  351918.,  354249.,  356580.,  457340.,  460472.,  463604.,
      466736.,  560545.,  564490.,  568435.,  572380.,  568885.,  572890.,
      576895.,  580900.,  577225.,  581290.,  585355.,  589420.,  451724.,
      455000.,  458276.,  461552.,  331155.,  333630.,  336105.,  338580.,
      433132.,  436408.,  439684.,  442960.,  564272.,  568672.,  573072.,
      577472.,  688580.,  694120.,  699660.,  705200.,  698100.,  703720.,
      709340.,  714960.,  707620.,  713320.,  719020.,  724720.,  551152.,
      555744.,  560336.,  564928.,  402028.,  405496.,  408964.,  412432.,
      494585.,  498890.,  503195.,  507500.,  640980.,  646760.,  652540.,
      658320.,  777875.,  785150.,  792425.,  799700.,  787775.,  795150.,
      802525.,  809900.,  797675.,  805150.,  812625.,  820100.,  617540.,
      623560.,  629580.,  635600.,  447545.,  452090.,  456635.,  461180.,
      539525.,  544250.,  548975.,  553700.,  698660.,  705000.,  711340.,
      717680.,  847175.,  855150.,  863125.,  871100.,  857075.,  865150.,
      873225.,  881300.,  866975.,  875150.,  883325.,  891500.,  670740.,
      677320.,  683900.,  690480.,  485765.,  490730.,  495695.,  500660.,
      584465.,  589610.,  594755.,  599900.,  756340.,  763240.,  770140.,
      777040.,  916475.,  925150.,  933825.,  942500.,  926375.,  935150.,
      943925.,  952700.,  936275.,  945150.,  954025.,  962900.,  723940.,
      731080.,  738220.,  745360.,  523985.,  529370.,  534755.,  540140.,
      629405.,  634970.,  640535.,  646100.,  814020.,  821480.,  828940.,
      836400.,  985775.,  995150.,  1004525., 1013900., 995675.,  1005150.,
      1014625., 1024100., 1005575., 1015150., 1024725., 1034300., 777140.,
      784840.,  792540.,  800240.,  562205.,  568010.,  573815.,  579620.,
      419020.,  423640.,  428260.,  432880.,  537008.,  543200.,  549392.,
      555584.,  643940.,  651720.,  659500.,  667280.,  650260.,  658120.,
      665980.,  673840.,  656580.,  664520.,  672460.,  680400.,  501872.,
      508256.,  514640.,  521024.,  358732.,  363544.,  368356.,  373168.,
      247527.,  251118.,  254709.,  258300.,  312620.,  317432.,  322244.,
      327056.,  368845.,  374890.,  380935.,  386980.,  372385.,  378490.,
      384595.,  390700.,  375925.,  382090.,  388255.,  394420.,  282044.,
      287000.,  291956.,  296912.,  197415.,  201150.,  204885.,  208620.,
      645939.,  650286.,  654633.,  658980.,  841724.,  847544.,  853364.,
      859184.,  1027585., 1034890., 1042195., 1049500., 1035925., 1043290.,
      1050655., 1058020., 1044265., 1051690., 1059115., 1066540., 814604.,
      820568.,  826532.,  832496.,  595251.,  599742.,  604233.,  608724.,
      774508.,  780472.,  786436.,  792400.,  1005104., 1013088., 1021072.,
      1029056., 1221700., 1231720., 1241740., 1251760., 1231220., 1241320.,
      1251420., 1261520., 1240740., 1250920., 1261100., 1271280., 963312.,
      971488.,  979664.,  987840.,  700396.,  706552.,  712708.,  718864.,
      854105.,  861770.,  869435.,  877100.,  1102420., 1112680., 1122940.,
      1133200., 1332275., 1345150., 1358025., 1370900., 1342175., 1355150.,
      1368125., 1381100., 1352075., 1365150., 1378225., 1391300., 1043140.,
      1053640., 1064140., 1074640., 753305.,  761210.,  769115.,  777020.,
      899045.,  907130.,  915215.,  923300.,  1160100., 1170920., 1181740.,
      1192560., 1401575., 1415150., 1428725., 1442300., 1411475., 1425150.,
      1438825., 1452500., 1421375., 1435150., 1448925., 1462700., 1096340.,
      1107400., 1118460., 1129520., 791525.,  799850.,  808175.,  816500.,
      943985.,  952490.,  960995.,  969500.,  1217780., 1229160., 1240540.,
      1251920., 1470875., 1485150., 1499425., 1513700., 1480775., 1495150.,
      1509525., 1523900., 1490675., 1505150., 1519625., 1534100., 1149540.,
      1161160., 1172780., 1184400., 829745.,  838490.,  847235.,  855980.,
      988925.,  997850.,  1006775., 1015700., 1275460., 1287400., 1299340.,
      1311280., 1540175., 1555150., 1570125., 1585100., 1550075., 1565150.,
      1580225., 1595300., 1559975., 1575150., 1590325., 1605500., 1202740.,
      1214920., 1227100., 1239280., 867965.,  877130.,  886295.,  895460.,
      652876.,  660184.,  667492.,  674800.,  834480.,  844256.,  854032.,
      863808.,  997860.,  1010120., 1022380., 1034640., 1004180., 1016520.,
      1028860., 1041200., 1010500., 1022920., 1035340., 1047760., 770672.,
      780640.,  790608.,  800576.,  549580.,  557080.,  564580.,  572080.,
      382599.,  388206.,  393813.,  399420.,  481964.,  489464.,  496964.,
      504464.,  567085.,  576490.,  585895.,  595300.,  570625.,  580090.,
      589555.,  599020.,  574165.,  583690.,  593215.,  602740.,  429884.,
      437528.,  445172.,  452816.,  300231.,  305982.,  311733.,  317484.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      223475.,  225150.,  226825.,  228500.,  233375.,  235150.,  236925.,
      238700.,  243275.,  245150.,  247025.,  248900.,  292775.,  295150.,
      297525.,  299900.,  302675.,  305150.,  307625.,  310100.,  312575.,
      315150.,  317725.,  320300.,  362075.,  365150.,  368225.,  371300.,
      371975.,  375150.,  378325.,  381500.,  381875.,  385150.,  388425.,
      391700.,  431375.,  435150.,  438925.,  442700.,  441275.,  445150.,
      449025.,  452900.,  451175.,  455150.,  459125.,  463100.,  777875.,
      785150.,  792425.,  799700.,  787775.,  795150.,  802525.,  809900.,
      797675.,  805150.,  812625.,  820100.,  847175.,  855150.,  863125.,
      871100.,  857075.,  865150.,  873225.,  881300.,  866975.,  875150.,
      883325.,  891500.,  916475.,  925150.,  933825.,  942500.,  926375.,
      935150.,  943925.,  952700.,  936275.,  945150.,  954025.,  962900.,
      985775.,  995150.,  1004525., 1013900., 995675.,  1005150., 1014625.,
      1024100., 1005575., 1015150., 1024725., 1034300., 1332275., 1345150.,
      1358025., 1370900., 1342175., 1355150., 1368125., 1381100., 1352075.,
      1365150., 1378225., 1391300., 1401575., 1415150., 1428725., 1442300.,
      1411475., 1425150., 1438825., 1452500., 1421375., 1435150., 1448925.,
      1462700., 1470875., 1485150., 1499425., 1513700., 1480775., 1495150.,
      1509525., 1523900., 1490675., 1505150., 1519625., 1534100., 1540175.,
      1555150., 1570125., 1585100., 1550075., 1565150., 1580225., 1595300.,
      1559975., 1575150., 1590325., 1605500.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      106398.,  145960.,  187250.,  204170.,  221090.,  178408.,  134766.,
      184328.,  248160.,  312760.,  332120.,  351480.,  280160.,  209096.,
      272290.,  362200.,  451150.,  471350.,  491550.,  388120.,  286930.,
      363850.,  479800.,  592550.,  612750.,  632950.,  496760.,  365050.,
      455410.,  597400.,  733950.,  754150.,  774350.,  605400.,  443170.,
      546970.,  715000.,  875350.,  895550.,  915750.,  714040.,  521290.,
      377000.,  488160.,  591640.,  604600.,  617560.,  476128.,  343400.,
      230598.,  294280.,  351050.,  358370.,  365690.,  276808.,  195606.,
      707166.,  925480.,  1134770., 1151690., 1168610., 914920.,  671022.,
      877832.,  1144160., 1396920., 1416280., 1435640., 1118816., 816584.,
      1004770., 1303000., 1582350., 1602550., 1622750., 1257240., 911890.,
      1096330., 1420600., 1723750., 1743950., 1764150., 1365880., 990010.,
      1187890., 1538200., 1865150., 1885350., 1905550., 1474520., 1068130.,
      1279450., 1655800., 2006550., 2026750., 2046950., 1583160., 1146250.,
      855464.,  1097440., 1317400., 1330360., 1343320., 1028064., 735848.,
      508806.,  643720.,  760970.,  768290.,  775610.,  583240.,  409302.,
      1307934., 1705000., 2082290., 2099210., 2116130., 1651432., 1207278.,
      1571336., 2040160., 2481080., 2500440., 2519800., 1957472., 1424072.,
      1737250., 2243800., 2713550., 2733750., 2753950., 2126360., 1536850.,
      1828810., 2361400., 2854950., 2875150., 2895350., 2235000., 1614970.,
      1920370., 2479000., 2996350., 3016550., 3036750., 2343640., 1693090.,
      2011930., 2596600., 3137750., 3157950., 3178150., 2452280., 1771210.,
      1333928., 1706720., 2043160., 2056120., 2069080., 1580000., 1128296.,
      787014.,  993160.,  1170890., 1178210., 1185530., 889672.,  622998.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      451150.,  471350.,  491550.,  592550.,  612750.,  632950.,
      733950.,  754150.,  774350.,  875350.,  895550.,  915750.,
      1582350., 1602550., 1622750., 1723750., 1743950., 1764150.,
      1865150., 1885350., 1905550., 2006550., 2026750., 2046950.,
      2713550., 2733750., 2753950., 2854950., 2875150., 2895350.,
      2996350., 3016550., 3036750., 3137750., 3157950., 3178150.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      211554.,  212796.,  290168.,  291920.,  372190.,  374500.,  405790.,
      408340.,  439390.,  442180.,  354488.,  356816.,  267714.,  269532.,
      366328.,  368656.,  493088.,  496320.,  621320.,  625520.,  659720.,
      664240.,  698120.,  702960.,  556320.,  560320.,  415096.,  418192.,
      540830.,  544580.,  719240.,  724400.,  895650.,  902300.,  935650.,
      942700.,  975650.,  983100.,  770120.,  776240.,  569150.,  573860.,
      722270.,  727700.,  952200.,  959600.,  1175650., 1185100., 1215650.,
      1225500., 1255650., 1265900., 985160.,  993520.,  723710.,  730100.,
      903710.,  910820.,  1185160., 1194800., 1455650., 1467900., 1495650.,
      1508300., 1535650., 1548700., 1200200., 1210800., 878270.,  886340.,
      1085150., 1093940., 1418120., 1430000., 1735650., 1750700., 1775650.,
      1791100., 1815650., 1831500., 1415240., 1428080., 1032830., 1042580.,
      746296.,  754000.,  965920.,  976320.,  1170120., 1183280., 1195720.,
      1209200., 1221320., 1235120., 941088.,  952256.,  678328.,  686800.,
      454914.,  461196.,  580088.,  588560.,  691390.,  702100.,  705790.,
      716740.,  720190.,  731380.,  544568.,  553616.,  384354.,  391212.,
      1405026., 1414332., 1838456., 1850960., 2253790., 2269540., 2287390.,
      2303380., 2320990., 2337220., 1816760., 1829840., 1332162., 1342044.,
      1742584., 1755664., 2270752., 2288320., 2771720., 2793840., 2810120.,
      2832560., 2848520., 2871280., 2219296., 2237632., 1619320., 1633168.,
      1992350., 2009540., 2582920., 2606000., 3135650., 3164700., 3175650.,
      3205100., 3215650., 3245500., 2490440., 2514480., 1805630., 1823780.,
      2173790., 2192660., 2815880., 2841200., 3415650., 3447500., 3455650.,
      3487900., 3495650., 3528300., 2705480., 2731760., 1960190., 1980020.,
      2355230., 2375780., 3048840., 3076400., 3695650., 3730300., 3735650.,
      3770700., 3775650., 3811100., 2920520., 2949040., 2114750., 2136260.,
      2536670., 2558900., 3281800., 3311600., 3975650., 4013100., 4015650.,
      4053500., 4055650., 4093900., 3135560., 3166320., 2269310., 2292500.,
      1692472., 1710928., 2170144., 2194880., 2603720., 2634800., 2629320.,
      2660720., 2654920., 2686640., 2030624., 2056128., 1452472., 1471696.,
      1003266., 1017612., 1268216., 1287440., 1497790., 1521940., 1512190.,
      1536580., 1526590., 1551220., 1146680., 1166480., 803682.,  818604.,
      2598498., 2615868., 3386744., 3410000., 4135390., 4164580., 4168990.,
      4198420., 4202590., 4232260., 3279032., 3302864., 2396610., 2414556.,
      3118840., 3142672., 4048416., 4080320., 4922120., 4962160., 4960520.,
      5000880., 4998920., 5039600., 3882272., 3914944., 2823544., 2848144.,
      3443870., 3474500., 4446600., 4487600., 5375650., 5427100., 5415650.,
      5467500., 5455650., 5507900., 4210760., 4252720., 3042110., 3073700.,
      3625310., 3657620., 4679560., 4722800., 5655650., 5709900., 5695650.,
      5750300., 5735650., 5790700., 4425800., 4470000., 3196670., 3229940.,
      3806750., 3840740., 4912520., 4958000., 5935650., 5992700., 5975650.,
      6033100., 6015650., 6073500., 4640840., 4687280., 3351230., 3386180.,
      3988190., 4023860., 5145480., 5193200., 6215650., 6275500., 6255650.,
      6315900., 6295650., 6356300., 4855880., 4904560., 3505790., 3542420.,
      2638648., 2667856., 3374368., 3413440., 4037320., 4086320., 4062920.,
      4112240., 4088520., 4138160., 3120160., 3160000., 2226616., 2256592.,
      1551618., 1574028., 1956344., 1986320., 2304190., 2341780., 2318590.,
      2356420., 2332990., 2371060., 1748792., 1779344., 1223010., 1245996.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      895650.,  902300.,  935650.,  942700.,  975650.,  983100.,  1175650.,
      1185100., 1215650., 1225500., 1255650., 1265900., 1455650., 1467900.,
      1495650., 1508300., 1535650., 1548700., 1735650., 1750700., 1775650.,
      1791100., 1815650., 1831500., 3135650., 3164700., 3175650., 3205100.,
      3215650., 3245500., 3415650., 3447500., 3455650., 3487900., 3495650.,
      3528300., 3695650., 3730300., 3735650., 3770700., 3775650., 3811100.,
      3975650., 4013100., 4015650., 4053500., 4055650., 4093900., 5375650.,
      5427100., 5415650., 5467500., 5455650., 5507900., 5655650., 5709900.,
      5695650., 5750300., 5735650., 5790700., 5935650., 5992700., 5975650.,
      6033100., 6015650., 6073500., 6215650., 6275500., 6255650., 6315900.,
      6295650., 6356300.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      421866.,   423108.,   424350.,   425592.,   578584.,   580336.,
      582088.,   583840.,   742070.,   744380.,   746690.,   749000.,
      809030.,   811580.,   814130.,   816680.,   875990.,   878780.,
      881570.,   884360.,   706648.,   708976.,   711304.,   713632.,
      533610.,   535428.,   537246.,   539064.,   730328.,   732656.,
      734984.,   737312.,   982944.,   986176.,   989408.,   992640.,
      1238440.,  1242640.,  1246840.,  1251040.,  1314920.,  1319440.,
      1323960.,  1328480.,  1391400.,  1396240.,  1401080.,  1405920.,
      1108640.,  1112640.,  1116640.,  1120640.,  827096.,   830192.,
      833288.,   836384.,   1077910.,  1081660.,  1085410.,  1089160.,
      1433320.,  1438480.,  1443640.,  1448800.,  1784650.,  1791300.,
      1797950.,  1804600.,  1864250.,  1871300.,  1878350.,  1885400.,
      1943850.,  1951300.,  1958750.,  1966200.,  1534120.,  1540240.,
      1546360.,  1552480.,  1133590.,  1138300.,  1143010.,  1147720.,
      1439110.,  1444540.,  1449970.,  1455400.,  1897000.,  1904400.,
      1911800.,  1919200.,  2341850.,  2351300.,  2360750.,  2370200.,
      2421450.,  2431300.,  2441150.,  2451000.,  2501050.,  2511300.,
      2521550.,  2531800.,  1961960.,  1970320.,  1978680.,  1987040.,
      1441030.,  1447420.,  1453810.,  1460200.,  1800310.,  1807420.,
      1814530.,  1821640.,  2360680.,  2370320.,  2379960.,  2389600.,
      2899050.,  2911300.,  2923550.,  2935800.,  2978650.,  2991300.,
      3003950.,  3016600.,  3058250.,  3071300.,  3084350.,  3097400.,
      2389800.,  2400400.,  2411000.,  2421600.,  1748470.,  1756540.,
      1764610.,  1772680.,  2161510.,  2170300.,  2179090.,  2187880.,
      2824360.,  2836240.,  2848120.,  2860000.,  3456250.,  3471300.,
      3486350.,  3501400.,  3535850.,  3551300.,  3566750.,  3582200.,
      3615450.,  3631300.,  3647150.,  3663000.,  2817640.,  2830480.,
      2843320.,  2856160.,  2055910.,  2065660.,  2075410.,  2085160.,
      1484888.,  1492592.,  1500296.,  1508000.,  1921440.,  1931840.,
      1942240.,  1952640.,  2327080.,  2340240.,  2353400.,  2366560.,
      2377960.,  2391440.,  2404920.,  2418400.,  2428840.,  2442640.,
      2456440.,  2470240.,  1871008.,  1882176.,  1893344.,  1904512.,
      1348184.,  1356656.,  1365128.,  1373600.,  903546.,   909828.,
      916110.,   922392.,   1151704.,  1160176.,  1168648.,  1177120.,
      1372070.,  1382780.,  1393490.,  1404200.,  1400630.,  1411580.,
      1422530.,  1433480.,  1429190.,  1440380.,  1451570.,  1462760.,
      1080088.,  1089136.,  1098184.,  1107232.,  761850.,   768708.,
      775566.,   782424.,   2800746.,  2810052.,  2819358.,  2828664.,
      3664408.,  3676912.,  3689416.,  3701920.,  4491830.,  4507580.,
      4523330.,  4539080.,  4558790.,  4574780.,  4590770.,  4606760.,
      4625750.,  4641980.,  4658210.,  4674440.,  3620440.,  3633520.,
      3646600.,  3659680.,  2654442.,  2664324.,  2674206.,  2684088.,
      3472088.,  3485168.,  3498248.,  3511328.,  4523936.,  4541504.,
      4559072.,  4576640.,  5521320.,  5543440.,  5565560.,  5587680.,
      5597800.,  5620240.,  5642680.,  5665120.,  5674280.,  5697040.,
      5719800.,  5742560.,  4420256.,  4438592.,  4456928.,  4475264.,
      3224792.,  3238640.,  3252488.,  3266336.,  3967510.,  3984700.,
      4001890.,  4019080.,  5142760.,  5165840.,  5188920.,  5212000.,
      6242250.,  6271300.,  6300350.,  6329400.,  6321850.,  6351300.,
      6380750.,  6410200.,  6401450.,  6431300.,  6461150.,  6491000.,
      4956840.,  4980880.,  5004920.,  5028960.,  3593110.,  3611260.,
      3629410.,  3647560.,  4328710.,  4347580.,  4366450.,  4385320.,
      5606440.,  5631760.,  5657080.,  5682400.,  6799450.,  6831300.,
      6863150.,  6895000.,  6879050.,  6911300.,  6943550.,  6975800.,
      6958650.,  6991300.,  7023950.,  7056600.,  5384680.,  5410960.,
      5437240.,  5463520.,  3900550.,  3920380.,  3940210.,  3960040.,
      4689910.,  4710460.,  4731010.,  4751560.,  6070120.,  6097680.,
      6125240.,  6152800.,  7356650.,  7391300.,  7425950.,  7460600.,
      7436250.,  7471300.,  7506350.,  7541400.,  7515850.,  7551300.,
      7586750.,  7622200.,  5812520.,  5841040.,  5869560.,  5898080.,
      4207990.,  4229500.,  4251010.,  4272520.,  5051110.,  5073340.,
      5095570.,  5117800.,  6533800.,  6563600.,  6593400.,  6623200.,
      7913850.,  7951300.,  7988750.,  8026200.,  7993450.,  8031300.,
      8069150.,  8107000.,  8073050.,  8111300.,  8149550.,  8187800.,
      6240360.,  6271120.,  6301880.,  6332640.,  4515430.,  4538620.,
      4561810.,  4585000.,  3366488.,  3384944.,  3403400.,  3421856.,
      4315552.,  4340288.,  4365024.,  4389760.,  5176360.,  5207440.,
      5238520.,  5269600.,  5227240.,  5258640.,  5290040.,  5321440.,
      5278120.,  5309840.,  5341560.,  5373280.,  4035744.,  4061248.,
      4086752.,  4112256.,  2885720.,  2904944.,  2924168.,  2943392.,
      1992186.,  2006532.,  2020878.,  2035224.,  2517208.,  2536432.,
      2555656.,  2574880.,  2971430.,  2995580.,  3019730.,  3043880.,
      2999990.,  3024380.,  3048770.,  3073160.,  3028550.,  3053180.,
      3077810.,  3102440.,  2273560.,  2293360.,  2313160.,  2332960.,
      1592442.,  1607364.,  1622286.,  1637208.,  5179626.,  5196996.,
      5214366.,  5231736.,  6750232.,  6773488.,  6796744.,  6820000.,
      8241590.,  8270780.,  8299970.,  8329160.,  8308550.,  8337980.,
      8367410.,  8396840.,  8375510.,  8405180.,  8434850.,  8464520.,
      6534232.,  6558064.,  6581896.,  6605728.,  4775274.,  4793220.,
      4811166.,  4829112.,  6213848.,  6237680.,  6261512.,  6285344.,
      8064928.,  8096832.,  8128736.,  8160640.,  9804200.,  9844240.,
      9884280.,  9924320.,  9880680.,  9921040.,  9961400.,  10001760.,
      9957160.,  9997840.,  10038520., 10079200., 7731872.,  7764544.,
      7797216.,  7829888.,  5622488.,  5647088.,  5671688.,  5696288.,
      6857110.,  6887740.,  6918370.,  6949000.,  8852200.,  8893200.,
      8934200.,  8975200.,  10699850., 10751300., 10802750., 10854200.,
      10779450., 10831300., 10883150., 10935000., 10859050., 10911300.,
      10963550., 11015800., 8379560.,  8421520.,  8463480.,  8505440.,
      6052630.,  6084220.,  6115810.,  6147400.,  7218310.,  7250620.,
      7282930.,  7315240.,  9315880.,  9359120.,  9402360.,  9445600.,
      11257050., 11311300., 11365550., 11419800., 11336650., 11391300.,
      11445950., 11500600., 11416250., 11471300., 11526350., 11581400.,
      8807400.,  8851600.,  8895800.,  8940000.,  6360070.,  6393340.,
      6426610.,  6459880.,  7579510.,  7613500.,  7647490.,  7681480.,
      9779560.,  9825040.,  9870520.,  9916000.,  11814250., 11871300.,
      11928350., 11985400., 11893850., 11951300., 12008750., 12066200.,
      11973450., 12031300., 12089150., 12147000., 9235240.,  9281680.,
      9328120.,  9374560.,  6667510.,  6702460.,  6737410.,  6772360.,
      7940710.,  7976380.,  8012050.,  8047720.,  10243240., 10290960.,
      10338680., 10386400., 12371450., 12431300., 12491150., 12551000.,
      12451050., 12511300., 12571550., 12631800., 12530650., 12591300.,
      12651950., 12712600., 9663080.,  9711760.,  9760440.,  9809120.,
      6974950.,  7011580.,  7048210.,  7084840.,  5248088.,  5277296.,
      5306504.,  5335712.,  6709664.,  6748736.,  6787808.,  6826880.,
      8025640.,  8074640.,  8123640.,  8172640.,  8076520.,  8125840.,
      8175160.,  8224480.,  8127400.,  8177040.,  8226680.,  8276320.,
      6200480.,  6240320.,  6280160.,  6320000.,  4423256.,  4453232.,
      4483208.,  4513184.,  3080826.,  3103236.,  3125646.,  3148056.,
      3882712.,  3912688.,  3942664.,  3972640.,  4570790.,  4608380.,
      4645970.,  4683560.,  4599350.,  4637180.,  4675010.,  4712840.,
      4627910.,  4665980.,  4704050.,  4742120.,  3467032.,  3497584.,
      3528136.,  3558688.,  2423034.,  2446020.,  2469006.,  2491992.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784650.,  1791300.,  1797950.,  1804600.,  1864250.,  1871300.,
      1878350.,  1885400.,  1943850.,  1951300.,  1958750.,  1966200.,
      2341850.,  2351300.,  2360750.,  2370200.,  2421450.,  2431300.,
      2441150.,  2451000.,  2501050.,  2511300.,  2521550.,  2531800.,
      2899050.,  2911300.,  2923550.,  2935800.,  2978650.,  2991300.,
      3003950.,  3016600.,  3058250.,  3071300.,  3084350.,  3097400.,
      3456250.,  3471300.,  3486350.,  3501400.,  3535850.,  3551300.,
      3566750.,  3582200.,  3615450.,  3631300.,  3647150.,  3663000.,
      6242250.,  6271300.,  6300350.,  6329400.,  6321850.,  6351300.,
      6380750.,  6410200.,  6401450.,  6431300.,  6461150.,  6491000.,
      6799450.,  6831300.,  6863150.,  6895000.,  6879050.,  6911300.,
      6943550.,  6975800.,  6958650.,  6991300.,  7023950.,  7056600.,
      7356650.,  7391300.,  7425950.,  7460600.,  7436250.,  7471300.,
      7506350.,  7541400.,  7515850.,  7551300.,  7586750.,  7622200.,
      7913850.,  7951300.,  7988750.,  8026200.,  7993450.,  8031300.,
      8069150.,  8107000.,  8073050.,  8111300.,  8149550.,  8187800.,
      10699850., 10751300., 10802750., 10854200., 10779450., 10831300.,
      10883150., 10935000., 10859050., 10911300., 10963550., 11015800.,
      11257050., 11311300., 11365550., 11419800., 11336650., 11391300.,
      11445950., 11500600., 11416250., 11471300., 11526350., 11581400.,
      11814250., 11871300., 11928350., 11985400., 11893850., 11951300.,
      12008750., 12066200., 11973450., 12031300., 12089150., 12147000.,
      12371450., 12431300., 12491150., 12551000., 12451050., 12511300.,
      12571550., 12631800., 12530650., 12591300., 12651950., 12712600.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1956.,  2666.,  3400.,  3670.,  3940.,  4210.,  3380.,  2541.,  3380.,
      4532.,  5690.,  6000.,  6310.,  6620.,  5260.,  3914.,  4990.,  6620.,
      8225.,  8550.,  8875.,  9200.,  7250.,  5350.,  6670.,  8780.,  10825.,
      11150., 11475., 11800., 9250.,  6790.,  8350.,  10940., 13425., 13750.,
      14075., 14400., 11250., 8230.,  10030., 13100., 16025., 16350., 16675.,
      17000., 13250., 9670.,  6956.,  9004.,  10910., 11120., 11330., 11540.,
      8900.,  6422.,  4296.,  5486.,  6550.,  6670.,  6790.,  6910.,  5240.,
      3711.,  12900., 16874., 20680., 20950., 21220., 21490., 16820., 12333.,
      16052., 20916., 25530., 25840., 26150., 26460., 20620., 15050., 18430.,
      23900., 29025., 29350., 29675., 30000., 23250., 16870., 20110., 26060.,
      31625., 31950., 32275., 32600., 25250., 18310., 21790., 28220., 34225.,
      34550., 34875., 35200., 27250., 19750., 23470., 30380., 36825., 37150.,
      37475., 37800., 29250., 21190., 15788., 20268., 24350., 24560., 24770.,
      24980., 19140., 13718., 9480.,  12014., 14230., 14350., 14470., 14590.,
      11000., 7743.,  23844., 31082., 37960., 38230., 38500., 38770., 30260.,
      22125., 28724., 37300., 45370., 45680., 45990., 46300., 35980., 26186.,
      31870., 41180., 49825., 50150., 50475., 50800., 39250., 28390., 33550.,
      43340., 52425., 52750., 53075., 53400., 41250., 29830., 35230., 45500.,
      55025., 55350., 55675., 56000., 43250., 31270., 36910., 47660., 57625.,
      57950., 58275., 58600., 45250., 32710., 24620., 31532., 37790., 38000.,
      38210., 38420., 29380., 21014., 14664., 18542., 21910., 22030., 22150.,
      22270., 16760., 11775.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8225.,  8550.,  8875.,  9200.,  10825., 11150., 11475., 11800.,
      13425., 13750., 14075., 14400., 16025., 16350., 16675., 17000.,
      29025., 29350., 29675., 30000., 31625., 31950., 32275., 32600.,
      34225., 34550., 34875., 35200., 36825., 37150., 37475., 37800.,
      49825., 50150., 50475., 50800., 52425., 52750., 53075., 53400.,
      55025., 55350., 55675., 56000., 57625., 57950., 58275., 58600.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3822.,   3912.,   5206.,   5332.,   6635.,   6800.,   7160.,   7340.,
      7685.,   7880.,   8210.,   8420.,   6586.,   6760.,   4947.,   5082.,
      6592.,   6760.,   8832.,   9064.,   11080.,  11380.,  11680.,  12000.,
      12280.,  12620.,  12880.,  13240.,  10224.,  10520.,  7600.,   7828.,
      9710.,   9980.,   12870.,  13240.,  15975.,  16450.,  16600.,  17100.,
      17225.,  17750.,  17850.,  18400.,  14050.,  14500.,  10355.,  10700.,
      12950.,  13340.,  17030.,  17560.,  20975.,  21650.,  21600.,  22300.,
      22225.,  22950.,  22850.,  23600.,  17890.,  18500.,  13115.,  13580.,
      16190.,  16700.,  21190.,  21880.,  25975.,  26850.,  26600.,  27500.,
      27225.,  28150.,  27850.,  28800.,  21730.,  22500.,  15875.,  16460.,
      19430.,  20060.,  25350.,  26200.,  30975.,  32050.,  31600.,  32700.,
      32225.,  33350.,  32850.,  34000.,  25570.,  26500.,  18635.,  19340.,
      13360.,  13912.,  17264.,  18008.,  20880.,  21820.,  21280.,  22240.,
      21680.,  22660.,  22080.,  23080.,  16992.,  17800.,  12232.,  12844.,
      8142.,   8592.,   10366.,  10972.,  12335.,  13100.,  12560.,  13340.,
      12785.,  13580.,  13010.,  13820.,  9826.,   10480.,  6927.,   7422.,
      25134.,  25800.,  32854.,  33748.,  40235.,  41360.,  40760.,  41900.,
      41285.,  42440.,  41810.,  42980.,  32698.,  33640.,  23955.,  24666.,
      31168.,  32104.,  40576.,  41832.,  49480.,  51060.,  50080.,  51680.,
      50680.,  52300.,  51280.,  52920.,  39920.,  41240.,  29104.,  30100.,
      35630.,  36860.,  46150.,  47800.,  55975.,  58050.,  56600.,  58700.,
      57225.,  59350.,  57850.,  60000.,  44770.,  46500.,  32435.,  33740.,
      38870.,  40220.,  50310.,  52120.,  60975.,  63250.,  61600.,  63900.,
      62225.,  64550.,  62850.,  65200.,  48610.,  50500.,  35195.,  36620.,
      42110.,  43580.,  54470.,  56440.,  65975.,  68450.,  66600.,  69100.,
      67225.,  69750.,  67850.,  70400.,  52450.,  54500.,  37955.,  39500.,
      45350.,  46940.,  58630.,  60760.,  70975.,  73650.,  71600.,  74300.,
      72225.,  74950.,  72850.,  75600.,  56290.,  58500.,  40715.,  42380.,
      30256.,  31576.,  38768.,  40536.,  46480.,  48700.,  46880.,  49120.,
      47280.,  49540.,  47680.,  49960.,  36448.,  38280.,  26056.,  27436.,
      17934.,  18960.,  22654.,  24028.,  26735.,  28460.,  26960.,  28700.,
      27185.,  28940.,  27410.,  29180.,  20578.,  22000.,  14415.,  15486.,
      46446.,  47688.,  60502.,  62164.,  73835.,  75920.,  74360.,  76460.,
      74885.,  77000.,  75410.,  77540.,  58810.,  60520.,  42963.,  44250.,
      55744.,  57448.,  72320.,  74600.,  87880.,  90740.,  88480.,  91360.,
      89080.,  91980.,  89680.,  92600.,  69616.,  71960.,  50608.,  52372.,
      61550.,  63740.,  79430.,  82360.,  95975.,  99650.,  96600.,  100300.,
      97225.,  100950., 97850.,  101600., 75490.,  78500.,  54515.,  56780.,
      64790.,  67100.,  83590.,  86680.,  100975., 104850., 101600., 105500.,
      102225., 106150., 102850., 106800., 79330.,  82500.,  57275.,  59660.,
      68030.,  70460.,  87750.,  91000.,  105975., 110050., 106600., 110700.,
      107225., 111350., 107850., 112000., 83170.,  86500.,  60035.,  62540.,
      71270.,  73820.,  91910.,  95320.,  110975., 115250., 111600., 115900.,
      112225., 116550., 112850., 117200., 87010.,  90500.,  62795.,  65420.,
      47152.,  49240.,  60272.,  63064.,  72080.,  75580.,  72480.,  76000.,
      72880.,  76420.,  73280.,  76840.,  55904.,  58760.,  39880.,  42028.,
      27726.,  29328.,  34942.,  37084.,  41135.,  43820.,  41360.,  44060.,
      41585.,  44300.,  41810.,  44540.,  31330.,  33520.,  21903.,  23550.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975.,  16450.,  16600.,  17100.,  17225.,  17750.,  17850.,  18400.,
      20975.,  21650.,  21600.,  22300.,  22225.,  22950.,  22850.,  23600.,
      25975.,  26850.,  26600.,  27500.,  27225.,  28150.,  27850.,  28800.,
      30975.,  32050.,  31600.,  32700.,  32225.,  33350.,  32850.,  34000.,
      55975.,  58050.,  56600.,  58700.,  57225.,  59350.,  57850.,  60000.,
      60975.,  63250.,  61600.,  63900.,  62225.,  64550.,  62850.,  65200.,
      65975.,  68450.,  66600.,  69100.,  67225.,  69750.,  67850.,  70400.,
      70975.,  73650.,  71600.,  74300.,  72225.,  74950.,  72850.,  75600.,
      95975.,  99650.,  96600.,  100300., 97225.,  100950., 97850.,  101600.,
      100975., 104850., 101600., 105500., 102225., 106150., 102850., 106800.,
      105975., 110050., 106600., 110700., 107225., 111350., 107850., 112000.,
      110975., 115250., 111600., 115900., 112225., 116550., 112850., 117200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7554.,   7644.,   7734.,   7824.,   10286.,  10412.,  10538.,  10664.,
      13105.,  13270.,  13435.,  13600.,  14140.,  14320.,  14500.,  14680.,
      15175.,  15370.,  15565.,  15760.,  16210.,  16420.,  16630.,  16840.,
      12998.,  13172.,  13346.,  13520.,  9759.,   9894.,   10029.,  10164.,
      13016.,  13184.,  13352.,  13520.,  17432.,  17664.,  17896.,  18128.,
      21860.,  22160.,  22460.,  22760.,  23040.,  23360.,  23680.,  24000.,
      24220.,  24560.,  24900.,  25240.,  25400.,  25760.,  26120.,  26480.,
      20152.,  20448.,  20744.,  21040.,  14972.,  15200.,  15428.,  15656.,
      19150.,  19420.,  19690.,  19960.,  25370.,  25740.,  26110.,  26480.,
      31475.,  31950.,  32425.,  32900.,  32700.,  33200.,  33700.,  34200.,
      33925.,  34450.,  34975.,  35500.,  35150.,  35700.,  36250.,  36800.,
      27650.,  28100.,  28550.,  29000.,  20365.,  20710.,  21055.,  21400.,
      25510.,  25900.,  26290.,  26680.,  33530.,  34060.,  34590.,  35120.,
      41275.,  41950.,  42625.,  43300.,  42500.,  43200.,  43900.,  44600.,
      43725.,  44450.,  45175.,  45900.,  44950.,  45700.,  46450.,  47200.,
      35170.,  35780.,  36390.,  37000.,  25765.,  26230.,  26695.,  27160.,
      31870.,  32380.,  32890.,  33400.,  41690.,  42380.,  43070.,  43760.,
      51075.,  51950.,  52825.,  53700.,  52300.,  53200.,  54100.,  55000.,
      53525.,  54450.,  55375.,  56300.,  54750.,  55700.,  56650.,  57600.,
      42690.,  43460.,  44230.,  45000.,  31165.,  31750.,  32335.,  32920.,
      38230.,  38860.,  39490.,  40120.,  49850.,  50700.,  51550.,  52400.,
      60875.,  61950.,  63025.,  64100.,  62100.,  63200.,  64300.,  65400.,
      63325.,  64450.,  65575.,  66700.,  64550.,  65700.,  66850.,  68000.,
      50210.,  51140.,  52070.,  53000.,  36565.,  37270.,  37975.,  38680.,
      26168.,  26720.,  27272.,  27824.,  33784.,  34528.,  35272.,  36016.,
      40820.,  41760.,  42700.,  43640.,  41600.,  42560.,  43520.,  44480.,
      42380.,  43360.,  44340.,  45320.,  43160.,  44160.,  45160.,  46160.,
      33176.,  33984.,  34792.,  35600.,  23852.,  24464.,  25076.,  25688.,
      15834.,  16284.,  16734.,  17184.,  20126.,  20732.,  21338.,  21944.,
      23905.,  24670.,  25435.,  26200.,  24340.,  25120.,  25900.,  26680.,
      24775.,  25570.,  26365.,  27160.,  25210.,  26020.,  26830.,  27640.,
      18998.,  19652.,  20306.,  20960.,  13359.,  13854.,  14349.,  14844.,
      49602.,  50268.,  50934.,  51600.,  64814.,  65708.,  66602.,  67496.,
      79345.,  80470.,  81595.,  82720.,  80380.,  81520.,  82660.,  83800.,
      81415.,  82570.,  83725.,  84880.,  82450.,  83620.,  84790.,  85960.,
      64454.,  65396.,  66338.,  67280.,  47199.,  47910.,  48621.,  49332.,
      61400.,  62336.,  63272.,  64208.,  79896.,  81152.,  82408.,  83664.,
      97380.,  98960.,  100540., 102120., 98560.,  100160., 101760., 103360.,
      99740.,  101360., 102980., 104600., 100920., 102560., 104200., 105840.,
      78520.,  79840.,  81160.,  82480.,  57212.,  58208.,  59204.,  60200.,
      70030.,  71260.,  72490.,  73720.,  90650.,  92300.,  93950.,  95600.,
      109875., 111950., 114025., 116100., 111100., 113200., 115300., 117400.,
      112325., 114450., 116575., 118700., 113550., 115700., 117850., 120000.,
      87810.,  89540.,  91270.,  93000.,  63565.,  64870.,  66175.,  67480.,
      76390.,  77740.,  79090.,  80440.,  98810.,  100620., 102430., 104240.,
      119675., 121950., 124225., 126500., 120900., 123200., 125500., 127800.,
      122125., 124450., 126775., 129100., 123350., 125700., 128050., 130400.,
      95330.,  97220.,  99110.,  101000., 68965.,  70390.,  71815.,  73240.,
      82750.,  84220.,  85690.,  87160.,  106970., 108940., 110910., 112880.,
      129475., 131950., 134425., 136900., 130700., 133200., 135700., 138200.,
      131925., 134450., 136975., 139500., 133150., 135700., 138250., 140800.,
      102850., 104900., 106950., 109000., 74365.,  75910.,  77455.,  79000.,
      89110.,  90700.,  92290.,  93880.,  115130., 117260., 119390., 121520.,
      139275., 141950., 144625., 147300., 140500., 143200., 145900., 148600.,
      141725., 144450., 147175., 149900., 142950., 145700., 148450., 151200.,
      110370., 112580., 114790., 117000., 79765.,  81430.,  83095.,  84760.,
      59192.,  60512.,  61832.,  63152.,  75768.,  77536.,  79304.,  81072.,
      90740.,  92960.,  95180.,  97400.,  91520.,  93760.,  96000.,  98240.,
      92300.,  94560.,  96820.,  99080.,  93080.,  95360.,  97640.,  99920.,
      71064.,  72896.,  74728.,  76560.,  50732.,  52112.,  53492.,  54872.,
      34842.,  35868.,  36894.,  37920.,  43934.,  45308.,  46682.,  48056.,
      51745.,  53470.,  55195.,  56920.,  52180.,  53920.,  55660.,  57400.,
      52615.,  54370.,  56125.,  57880.,  53050.,  54820.,  56590.,  58360.,
      39734.,  41156.,  42578.,  44000.,  27759.,  28830.,  29901.,  30972.,
      91650.,  92892.,  94134.,  95376.,  119342., 121004., 122666., 124328.,
      145585., 147670., 149755., 151840., 146620., 148720., 150820., 152920.,
      147655., 149770., 151885., 154000., 148690., 150820., 152950., 155080.,
      115910., 117620., 119330., 121040., 84639.,  85926.,  87213.,  88500.,
      109784., 111488., 113192., 114896., 142360., 144640., 146920., 149200.,
      172900., 175760., 178620., 181480., 174080., 176960., 179840., 182720.,
      175260., 178160., 181060., 183960., 176440., 179360., 182280., 185200.,
      136888., 139232., 141576., 143920., 99452.,  101216., 102980., 104744.,
      120910., 123100., 125290., 127480., 155930., 158860., 161790., 164720.,
      188275., 191950., 195625., 199300., 189500., 193200., 196900., 200600.,
      190725., 194450., 198175., 201900., 191950., 195700., 199450., 203200.,
      147970., 150980., 153990., 157000., 106765., 109030., 111295., 113560.,
      127270., 129580., 131890., 134200., 164090., 167180., 170270., 173360.,
      198075., 201950., 205825., 209700., 199300., 203200., 207100., 211000.,
      200525., 204450., 208375., 212300., 201750., 205700., 209650., 213600.,
      155490., 158660., 161830., 165000., 112165., 114550., 116935., 119320.,
      133630., 136060., 138490., 140920., 172250., 175500., 178750., 182000.,
      207875., 211950., 216025., 220100., 209100., 213200., 217300., 221400.,
      210325., 214450., 218575., 222700., 211550., 215700., 219850., 224000.,
      163010., 166340., 169670., 173000., 117565., 120070., 122575., 125080.,
      139990., 142540., 145090., 147640., 180410., 183820., 187230., 190640.,
      217675., 221950., 226225., 230500., 218900., 223200., 227500., 231800.,
      220125., 224450., 228775., 233100., 221350., 225700., 230050., 234400.,
      170530., 174020., 177510., 181000., 122965., 125590., 128215., 130840.,
      92216.,  94304.,  96392.,  98480.,  117752., 120544., 123336., 126128.,
      140660., 144160., 147660., 151160., 141440., 144960., 148480., 152000.,
      142220., 145760., 149300., 152840., 143000., 146560., 150120., 153680.,
      108952., 111808., 114664., 117520., 77612.,  79760.,  81908.,  84056.,
      53850.,  55452.,  57054.,  58656.,  67742.,  69884.,  72026.,  74168.,
      79585.,  82270.,  84955.,  87640.,  80020.,  82720.,  85420.,  88120.,
      80455.,  83170.,  85885.,  88600.,  80890.,  83620.,  86350.,  89080.,
      60470.,  62660.,  64850.,  67040.,  42159.,  43806.,  45453.,  47100.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475.,  31950.,  32425.,  32900.,  32700.,  33200.,  33700.,  34200.,
      33925.,  34450.,  34975.,  35500.,  35150.,  35700.,  36250.,  36800.,
      41275.,  41950.,  42625.,  43300.,  42500.,  43200.,  43900.,  44600.,
      43725.,  44450.,  45175.,  45900.,  44950.,  45700.,  46450.,  47200.,
      51075.,  51950.,  52825.,  53700.,  52300.,  53200.,  54100.,  55000.,
      53525.,  54450.,  55375.,  56300.,  54750.,  55700.,  56650.,  57600.,
      60875.,  61950.,  63025.,  64100.,  62100.,  63200.,  64300.,  65400.,
      63325.,  64450.,  65575.,  66700.,  64550.,  65700.,  66850.,  68000.,
      109875., 111950., 114025., 116100., 111100., 113200., 115300., 117400.,
      112325., 114450., 116575., 118700., 113550., 115700., 117850., 120000.,
      119675., 121950., 124225., 126500., 120900., 123200., 125500., 127800.,
      122125., 124450., 126775., 129100., 123350., 125700., 128050., 130400.,
      129475., 131950., 134425., 136900., 130700., 133200., 135700., 138200.,
      131925., 134450., 136975., 139500., 133150., 135700., 138250., 140800.,
      139275., 141950., 144625., 147300., 140500., 143200., 145900., 148600.,
      141725., 144450., 147175., 149900., 142950., 145700., 148450., 151200.,
      188275., 191950., 195625., 199300., 189500., 193200., 196900., 200600.,
      190725., 194450., 198175., 201900., 191950., 195700., 199450., 203200.,
      198075., 201950., 205825., 209700., 199300., 203200., 207100., 211000.,
      200525., 204450., 208375., 212300., 201750., 205700., 209650., 213600.,
      207875., 211950., 216025., 220100., 209100., 213200., 217300., 221400.,
      210325., 214450., 218575., 222700., 211550., 215700., 219850., 224000.,
      217675., 221950., 226225., 230500., 218900., 223200., 227500., 231800.,
      220125., 224450., 228775., 233100., 221350., 225700., 230050., 234400.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15135.,  20644.,  26345.,  28475.,  30605.,  32735.,  26284.,  19761.,
      26320.,  35296.,  44320.,  46760.,  49200.,  51640.,  41024.,  30520.,
      38975.,  51700.,  64225.,  66775.,  69325.,  71875.,  56620.,  41765.,
      52175.,  68660.,  84625.,  87175.,  89725.,  92275.,  72300.,  53045.,
      65375.,  85620.,  105025., 107575., 110125., 112675., 87980.,  64325.,
      78575.,  102580., 125425., 127975., 130525., 133075., 103660., 75605.,
      54280.,  70208.,  85000.,  86640.,  88280.,  89920.,  69280.,  49936.,
      33315.,  42484.,  50645.,  51575.,  52505.,  53435.,  40444.,  28581.,
      101535., 132772., 162665., 164795., 166925., 169055., 132268., 96945.,
      126160., 164320., 200480., 202920., 205360., 207800., 161856., 118072.,
      144575., 187380., 227425., 229975., 232525., 235075., 182060., 132005.,
      157775., 204340., 247825., 250375., 252925., 255475., 197740., 143285.,
      170975., 221300., 268225., 270775., 273325., 275875., 213420., 154565.,
      184175., 238260., 288625., 291175., 293725., 296275., 229100., 165845.,
      123400., 158272., 189960., 191600., 193240., 194880., 149152., 106768.,
      73635.,  93172.,  110165., 111095., 112025., 112955., 84988.,  59685.,
      187935., 244900., 298985., 301115., 303245., 305375., 238252., 174129.,
      226000., 293344., 356640., 359080., 361520., 363960., 282688., 205624.,
      250175., 323060., 390625., 393175., 395725., 398275., 307500., 222245.,
      263375., 340020., 411025., 413575., 416125., 418675., 323180., 233525.,
      276575., 356980., 431425., 433975., 436525., 439075., 338860., 244805.,
      289775., 373940., 451825., 454375., 456925., 459475., 354540., 256085.,
      192520., 246336., 294920., 296560., 298200., 299840., 229024., 163600.,
      113955., 143860., 169685., 170615., 171545., 172475., 129532., 90789.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      64225.,  66775.,  69325.,  71875.,  84625.,  87175.,  89725.,  92275.,
      105025., 107575., 110125., 112675., 125425., 127975., 130525., 133075.,
      227425., 229975., 232525., 235075., 247825., 250375., 252925., 255475.,
      268225., 270775., 273325., 275875., 288625., 291175., 293725., 296275.,
      390625., 393175., 395725., 398275., 411025., 413575., 416125., 418675.,
      431425., 433975., 436525., 439075., 451825., 454375., 456925., 459475.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29919.,  30270.,  40796.,  41288.,  52045.,  52690.,  56245.,  56950.,
      60445.,  61210.,  64645.,  65470.,  51884.,  52568.,  38991.,  39522.,
      51980.,  52640.,  69680.,  70592.,  87460.,  88640.,  92260.,  93520.,
      97060.,  98400.,  101860., 103280., 80880.,  82048.,  60140.,  61040.,
      76885.,  77950.,  101940., 103400., 126575., 128450., 131575., 133550.,
      136575., 138650., 141575., 143750., 111460., 113240., 82165.,  83530.,
      102805., 104350., 135220., 137320., 166575., 169250., 171575., 174350.,
      176575., 179450., 181575., 184550., 142180., 144600., 104245., 106090.,
      128725., 130750., 168500., 171240., 206575., 210050., 211575., 215150.,
      216575., 220250., 221575., 225350., 172900., 175960., 126325., 128650.,
      154645., 157150., 201780., 205160., 246575., 250850., 251575., 255950.,
      256575., 261050., 261575., 266150., 203620., 207320., 148405., 151210.,
      106364., 108560., 137456., 140416., 166260., 170000., 169460., 173280.,
      172660., 176560., 175860., 179840., 135344., 138560., 97436.,  99872.,
      64839.,  66630.,  82556.,  84968.,  98245.,  101290., 100045., 103150.,
      101845., 105010., 103645., 106870., 78284.,  80888.,  55191.,  57162.,
      200415., 203070., 261980., 265544., 320845., 325330., 325045., 329590.,
      329245., 333850., 333445., 338110., 260780., 264536., 191055., 193890.,
      248588., 252320., 323632., 328640., 394660., 400960., 399460., 405840.,
      404260., 410720., 409060., 415600., 318448., 323712., 232172., 236144.,
      284245., 289150., 368180., 374760., 446575., 454850., 451575., 459950.,
      456575., 465050., 461575., 470150., 357220., 364120., 258805., 264010.,
      310165., 315550., 401460., 408680., 486575., 495650., 491575., 500750.,
      496575., 505850., 501575., 510950., 387940., 395480., 280885., 286570.,
      336085., 341950., 434740., 442600., 526575., 536450., 531575., 541550.,
      536575., 546650., 541575., 551750., 418660., 426840., 302965., 309130.,
      362005., 368350., 468020., 476520., 566575., 577250., 571575., 582350.,
      576575., 587450., 581575., 592550., 449380., 458200., 325045., 331690.,
      241532., 246800., 309488., 316544., 371060., 379920., 374260., 383200.,
      377460., 386480., 380660., 389760., 290992., 298304., 208028., 213536.,
      143175., 147270., 180860., 186344., 213445., 220330., 215245., 222190.,
      217045., 224050., 218845., 225910., 164300., 169976., 115095., 119370.,
      370911., 375870., 483164., 489800., 589645., 597970., 593845., 602230.,
      598045., 606490., 602245., 610750., 469676., 476504., 343119., 348258.,
      445196., 452000., 577584., 586688., 701860., 713280., 706660., 718160.,
      711460., 723040., 716260., 727920., 556016., 565376., 404204., 411248.,
      491605., 500350., 634420., 646120., 766575., 781250., 771575., 786350.,
      776575., 791450., 781575., 796550., 602980., 615000., 435445., 444490.,
      517525., 526750., 667700., 680040., 806575., 822050., 811575., 827150.,
      816575., 832250., 821575., 837350., 633700., 646360., 457525., 467050.,
      543445., 553150., 700980., 713960., 846575., 862850., 851575., 867950.,
      856575., 873050., 861575., 878150., 664420., 677720., 479605., 489610.,
      569365., 579550., 734260., 747880., 886575., 903650., 891575., 908750.,
      896575., 913850., 901575., 918950., 695140., 709080., 501685., 512170.,
      376700., 385040., 481520., 492672., 575860., 589840., 579060., 593120.,
      582260., 596400., 585460., 599680., 446640., 458048., 318620., 327200.,
      221511., 227910., 279164., 287720., 328645., 339370., 330445., 341230.,
      332245., 343090., 334045., 344950., 250316., 259064., 174999., 181578.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      126575., 128450., 131575., 133550., 136575., 138650., 141575., 143750.,
      166575., 169250., 171575., 174350., 176575., 179450., 181575., 184550.,
      206575., 210050., 211575., 215150., 216575., 220250., 221575., 225350.,
      246575., 250850., 251575., 255950., 256575., 261050., 261575., 266150.,
      446575., 454850., 451575., 459950., 456575., 465050., 461575., 470150.,
      486575., 495650., 491575., 500750., 496575., 505850., 501575., 510950.,
      526575., 536450., 531575., 541550., 536575., 546650., 541575., 551750.,
      566575., 577250., 571575., 582350., 576575., 587450., 581575., 592550.,
      766575., 781250., 771575., 786350., 776575., 791450., 781575., 796550.,
      806575., 822050., 811575., 827150., 816575., 832250., 821575., 837350.,
      846575., 862850., 851575., 867950., 856575., 873050., 861575., 878150.,
      886575., 903650., 891575., 908750., 896575., 913850., 901575., 918950.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      59487.,   59838.,   60189.,   60540.,   81100.,   81592.,   82084.,
      82576.,   103445.,  104090.,  104735.,  105380.,  111785.,  112490.,
      113195.,  113900.,  120125.,  120890.,  121655.,  122420.,  128465.,
      129290.,  130115.,  130940.,  103084.,  103768.,  104452.,  105136.,
      77451.,   77982.,   78513.,   79044.,   103300.,  103960.,  104620.,
      105280.,  138448.,  139360.,  140272.,  141184.,  173740.,  174920.,
      176100.,  177280.,  183260.,  184520.,  185780.,  187040.,  192780.,
      194120.,  195460.,  196800.,  202300.,  203720.,  205140.,  206560.,
      160592.,  161760.,  162928.,  164096.,  119380.,  120280.,  121180.,
      122080.,  152705.,  153770.,  154835.,  155900.,  202420.,  203880.,
      205340.,  206800.,  251275.,  253150.,  255025.,  256900.,  261175.,
      263150.,  265125.,  267100.,  271075.,  273150.,  275225.,  277300.,
      280975.,  283150.,  285325.,  287500.,  221140.,  222920.,  224700.,
      226480.,  162965.,  164330.,  165695.,  167060.,  204065.,  205610.,
      207155.,  208700.,  268340.,  270440.,  272540.,  274640.,  330475.,
      333150.,  335825.,  338500.,  340375.,  343150.,  345925.,  348700.,
      350275.,  353150.,  356025.,  358900.,  360175.,  363150.,  366125.,
      369100.,  281940.,  284360.,  286780.,  289200.,  206645.,  208490.,
      210335.,  212180.,  255425.,  257450.,  259475.,  261500.,  334260.,
      337000.,  339740.,  342480.,  409675.,  413150.,  416625.,  420100.,
      419575.,  423150.,  426725.,  430300.,  429475.,  433150.,  436825.,
      440500.,  439375.,  443150.,  446925.,  450700.,  342740.,  345800.,
      348860.,  351920.,  250325.,  252650.,  254975.,  257300.,  306785.,
      309290.,  311795.,  314300.,  400180.,  403560.,  406940.,  410320.,
      488875.,  493150.,  497425.,  501700.,  498775.,  503150.,  507525.,
      511900.,  508675.,  513150.,  517625.,  522100.,  518575.,  523150.,
      527725.,  532300.,  403540.,  407240.,  410940.,  414640.,  294005.,
      296810.,  299615.,  302420.,  210532.,  212728.,  214924.,  217120.,
      271952.,  274912.,  277872.,  280832.,  328780.,  332520.,  336260.,
      340000.,  335100.,  338920.,  342740.,  346560.,  341420.,  345320.,
      349220.,  353120.,  347740.,  351720.,  355700.,  359680.,  267472.,
      270688.,  273904.,  277120.,  192436.,  194872.,  197308.,  199744.,
      127887.,  129678.,  131469.,  133260.,  162700.,  165112.,  167524.,
      169936.,  193445.,  196490.,  199535.,  202580.,  196985.,  200090.,
      203195.,  206300.,  200525.,  203690.,  206855.,  210020.,  204065.,
      207290.,  210515.,  213740.,  153964.,  156568.,  159172.,  161776.,
      108411.,  110382.,  112353.,  114324.,  398175.,  400830.,  403485.,
      406140.,  520396.,  523960.,  527524.,  531088.,  637205.,  641690.,
      646175.,  650660.,  645545.,  650090.,  654635.,  659180.,  653885.,
      658490.,  663095.,  667700.,  662225.,  666890.,  671555.,  676220.,
      517804.,  521560.,  525316.,  529072.,  379275.,  382110.,  384945.,
      387780.,  493444.,  497176.,  500908.,  504640.,  642256.,  647264.,
      652272.,  657280.,  783020.,  789320.,  795620.,  801920.,  792540.,
      798920.,  805300.,  811680.,  802060.,  808520.,  814980.,  821440.,
      811580.,  818120.,  824660.,  831200.,  631632.,  636896.,  642160.,
      647424.,  460372.,  464344.,  468316.,  472288.,  563585.,  568490.,
      573395.,  578300.,  729780.,  736360.,  742940.,  749520.,  884875.,
      893150.,  901425.,  909700.,  894775.,  903150.,  911525.,  919900.,
      904675.,  913150.,  921625.,  930100.,  914575.,  923150.,  931725.,
      940300.,  707540.,  714440.,  721340.,  728240.,  512405.,  517610.,
      522815.,  528020.,  614945.,  620330.,  625715.,  631100.,  795700.,
      802920.,  810140.,  817360.,  964075.,  973150.,  982225.,  991300.,
      973975.,  983150.,  992325.,  1001500., 983875.,  993150.,  1002425.,
      1011700., 993775.,  1003150., 1012525., 1021900., 768340.,  775880.,
      783420.,  790960.,  556085.,  561770.,  567455.,  573140.,  666305.,
      672170.,  678035.,  683900.,  861620.,  869480.,  877340.,  885200.,
      1043275., 1053150., 1063025., 1072900., 1053175., 1063150., 1073125.,
      1083100., 1063075., 1073150., 1083225., 1093300., 1072975., 1083150.,
      1093325., 1103500., 829140.,  837320.,  845500.,  853680.,  599765.,
      605930.,  612095.,  618260.,  717665.,  724010.,  730355.,  736700.,
      927540.,  936040.,  944540.,  953040.,  1122475., 1133150., 1143825.,
      1154500., 1132375., 1143150., 1153925., 1164700., 1142275., 1153150.,
      1164025., 1174900., 1152175., 1163150., 1174125., 1185100., 889940.,
      898760.,  907580.,  916400.,  643445.,  650090.,  656735.,  663380.,
      477796.,  483064.,  488332.,  493600.,  611920.,  618976.,  626032.,
      633088.,  733260.,  742120.,  750980.,  759840.,  739580.,  748520.,
      757460.,  766400.,  745900.,  754920.,  763940.,  772960.,  752220.,
      761320.,  770420.,  779520.,  574672.,  581984.,  589296.,  596608.,
      410548.,  416056.,  421564.,  427072.,  282255.,  286350.,  290445.,
      294540.,  356236.,  361720.,  367204.,  372688.,  420005.,  426890.,
      433775.,  440660.,  423545.,  430490.,  437435.,  444380.,  427085.,
      434090.,  441095.,  448100.,  430625.,  437690.,  444755.,  451820.,
      322924.,  328600.,  334276.,  339952.,  225915.,  230190.,  234465.,
      238740.,  736863.,  741822.,  746781.,  751740.,  959692.,  966328.,
      972964.,  979600.,  1170965., 1179290., 1187615., 1195940., 1179305.,
      1187690., 1196075., 1204460., 1187645., 1196090., 1204535., 1212980.,
      1195985., 1204490., 1212995., 1221500., 932524.,  939352.,  946180.,
      953008.,  681099.,  686238.,  691377.,  696516.,  883588.,  890392.,
      897196.,  904000.,  1146064., 1155168., 1164272., 1173376., 1392300.,
      1403720., 1415140., 1426560., 1401820., 1413320., 1424820., 1436320.,
      1411340., 1422920., 1434500., 1446080., 1420860., 1432520., 1444180.,
      1455840., 1102672., 1112032., 1121392., 1130752., 801364.,  808408.,
      815452.,  822496.,  974465.,  983210.,  991955.,  1000700., 1257140.,
      1268840., 1280540., 1292240., 1518475., 1533150., 1547825., 1562500.,
      1528375., 1543150., 1557925., 1572700., 1538275., 1553150., 1568025.,
      1582900., 1548175., 1563150., 1578125., 1593100., 1193940., 1205960.,
      1217980., 1230000., 861845.,  870890.,  879935.,  888980.,  1025825.,
      1035050., 1044275., 1053500., 1323060., 1335400., 1347740., 1360080.,
      1597675., 1613150., 1628625., 1644100., 1607575., 1623150., 1638725.,
      1654300., 1617475., 1633150., 1648825., 1664500., 1627375., 1643150.,
      1658925., 1674700., 1254740., 1267400., 1280060., 1292720., 905525.,
      915050.,  924575.,  934100.,  1077185., 1086890., 1096595., 1106300.,
      1388980., 1401960., 1414940., 1427920., 1676875., 1693150., 1709425.,
      1725700., 1686775., 1703150., 1719525., 1735900., 1696675., 1713150.,
      1729625., 1746100., 1706575., 1723150., 1739725., 1756300., 1315540.,
      1328840., 1342140., 1355440., 949205.,  959210.,  969215.,  979220.,
      1128545., 1138730., 1148915., 1159100., 1454900., 1468520., 1482140.,
      1495760., 1756075., 1773150., 1790225., 1807300., 1765975., 1783150.,
      1800325., 1817500., 1775875., 1793150., 1810425., 1827700., 1785775.,
      1803150., 1820525., 1837900., 1376340., 1390280., 1404220., 1418160.,
      992885.,  1003370., 1013855., 1024340., 745060.,  753400.,  761740.,
      770080.,  951888.,  963040.,  974192.,  985344.,  1137740., 1151720.,
      1165700., 1179680., 1144060., 1158120., 1172180., 1186240., 1150380.,
      1164520., 1178660., 1192800., 1156700., 1170920., 1185140., 1199360.,
      881872.,  893280.,  904688.,  916096.,  628660.,  637240.,  645820.,
      654400.,  436623.,  443022.,  449421.,  455820.,  549772.,  558328.,
      566884.,  575440.,  646565.,  657290.,  668015.,  678740.,  650105.,
      660890.,  671675.,  682460.,  653645.,  664490.,  675335.,  686180.,
      657185.,  668090.,  678995.,  689900.,  491884.,  500632.,  509380.,
      518128.,  343419.,  349998.,  356577.,  363156.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      251275.,  253150.,  255025.,  256900.,  261175.,  263150.,  265125.,
      267100.,  271075.,  273150.,  275225.,  277300.,  280975.,  283150.,
      285325.,  287500.,  330475.,  333150.,  335825.,  338500.,  340375.,
      343150.,  345925.,  348700.,  350275.,  353150.,  356025.,  358900.,
      360175.,  363150.,  366125.,  369100.,  409675.,  413150.,  416625.,
      420100.,  419575.,  423150.,  426725.,  430300.,  429475.,  433150.,
      436825.,  440500.,  439375.,  443150.,  446925.,  450700.,  488875.,
      493150.,  497425.,  501700.,  498775.,  503150.,  507525.,  511900.,
      508675.,  513150.,  517625.,  522100.,  518575.,  523150.,  527725.,
      532300.,  884875.,  893150.,  901425.,  909700.,  894775.,  903150.,
      911525.,  919900.,  904675.,  913150.,  921625.,  930100.,  914575.,
      923150.,  931725.,  940300.,  964075.,  973150.,  982225.,  991300.,
      973975.,  983150.,  992325.,  1001500., 983875.,  993150.,  1002425.,
      1011700., 993775.,  1003150., 1012525., 1021900., 1043275., 1053150.,
      1063025., 1072900., 1053175., 1063150., 1073125., 1083100., 1063075.,
      1073150., 1083225., 1093300., 1072975., 1083150., 1093325., 1103500.,
      1122475., 1133150., 1143825., 1154500., 1132375., 1143150., 1153925.,
      1164700., 1142275., 1153150., 1164025., 1174900., 1152175., 1163150.,
      1174125., 1185100., 1518475., 1533150., 1547825., 1562500., 1528375.,
      1543150., 1557925., 1572700., 1538275., 1553150., 1568025., 1582900.,
      1548175., 1563150., 1578125., 1593100., 1597675., 1613150., 1628625.,
      1644100., 1607575., 1623150., 1638725., 1654300., 1617475., 1633150.,
      1648825., 1664500., 1627375., 1643150., 1658925., 1674700., 1676875.,
      1693150., 1709425., 1725700., 1686775., 1703150., 1719525., 1735900.,
      1696675., 1713150., 1729625., 1746100., 1706575., 1723150., 1739725.,
      1756300., 1756075., 1773150., 1790225., 1807300., 1765975., 1783150.,
      1800325., 1817500., 1775875., 1793150., 1810425., 1827700., 1785775.,
      1803150., 1820525., 1837900.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      119046.,  162440.,  207370.,  224290.,  241210.,  258130.,  207272.,
      155838.,  207704.,  278560.,  349800.,  369160.,  388520.,  407880.,
      324000.,  241016.,  308050.,  408600.,  507550.,  527750.,  547950.,
      568150.,  447480.,  330010.,  412690.,  543000.,  669150.,  689350.,
      709550.,  729750.,  571640.,  419290.,  517330.,  677400.,  830750.,
      850950.,  871150.,  891350.,  695800.,  508570.,  621970.,  811800.,
      992350.,  1012550., 1032750., 1052950., 819960.,  597850.,  428792.,
      554400.,  670920.,  683880.,  696840.,  709800.,  546592.,  393752.,
      262326.,  334280.,  398170.,  405490.,  412810.,  420130.,  317672.,
      224238.,  805638.,  1053320., 1290250., 1307170., 1324090., 1341010.,
      1049000., 768702.,  1000280., 1302560., 1588840., 1608200., 1627560.,
      1646920., 1282464., 935288.,  1145170., 1483800., 1800350., 1820550.,
      1840750., 1860950., 1440760., 1044250., 1249810., 1618200., 1961950.,
      1982150., 2002350., 2022550., 1564920., 1133530., 1354450., 1752600.,
      2123550., 2143750., 2163950., 2184150., 1689080., 1222810., 1459090.,
      1887000., 2285150., 2305350., 2325550., 2345750., 1813240., 1312090.,
      975608.,  1250720., 1500360., 1513320., 1526280., 1539240., 1177376.,
      842264.,  580278.,  733640.,  866650.,  873970.,  881290.,  888610.,
      667880.,  468462.,  1492230., 1944200., 2373130., 2390050., 2406970.,
      2423890., 1890728., 1381566., 1792856., 2326560., 2827880., 2847240.,
      2866600., 2885960., 2240928., 1629560., 1982290., 2559000., 3093150.,
      3113350., 3133550., 3153750., 2434040., 1758490., 2086930., 2693400.,
      3254750., 3274950., 3295150., 3315350., 2558200., 1847770., 2191570.,
      2827800., 3416350., 3436550., 3456750., 3476950., 2682360., 1937050.,
      2296210., 2962200., 3577950., 3598150., 3618350., 3638550., 2806520.,
      2026330., 1522424., 1947040., 2329800., 2342760., 2355720., 2368680.,
      1808160., 1290776., 898230.,  1133000., 1335130., 1342450., 1349770.,
      1357090., 1018088., 712686.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      507550.,  527750.,  547950.,  568150.,  669150.,  689350.,  709550.,
      729750.,  830750.,  850950.,  871150.,  891350.,  992350.,  1012550.,
      1032750., 1052950., 1800350., 1820550., 1840750., 1860950., 1961950.,
      1982150., 2002350., 2022550., 2123550., 2143750., 2163950., 2184150.,
      2285150., 2305350., 2325550., 2345750., 3093150., 3113350., 3133550.,
      3153750., 3254750., 3274950., 3295150., 3315350., 3416350., 3436550.,
      3456750., 3476950., 3577950., 3598150., 3618350., 3638550.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      236706.,  238092.,  322936.,  324880.,  412190.,  414740.,  445790.,
      448580.,  479390.,  482420.,  512990.,  516260.,  411832.,  414544.,
      309570.,  311676.,  412792.,  415408.,  553504.,  557120.,  694920.,
      699600.,  733320.,  738320.,  771720.,  777040.,  810120.,  815760.,
      643360.,  648000.,  478456.,  482032.,  611870.,  616100.,  811400.,
      817200.,  1007650., 1015100., 1047650., 1055500., 1087650., 1095900.,
      1127650., 1136300., 887880.,  894960.,  654590.,  660020.,  819230.,
      825380.,  1077640., 1086000., 1327650., 1338300., 1367650., 1378700.,
      1407650., 1419100., 1447650., 1459500., 1133640., 1143280., 831230.,
      838580.,  1026590., 1034660., 1343880., 1354800., 1647650., 1661500.,
      1687650., 1701900., 1727650., 1742300., 1767650., 1782700., 1379400.,
      1391600., 1007870., 1017140., 1233950., 1243940., 1610120., 1623600.,
      1967650., 1984700., 2007650., 2025100., 2047650., 2065500., 2087650.,
      2105900., 1625160., 1639920., 1184510., 1195700., 848824.,  857584.,
      1096992., 1108800., 1326920., 1341840., 1352520., 1367760., 1378120.,
      1393680., 1403720., 1419600., 1080352., 1093184., 777784.,  787504.,
      517506.,  524652.,  658936.,  668560.,  784190.,  796340.,  798590.,
      810980.,  812990.,  825620.,  827390.,  840260.,  624952.,  635344.,
      440610.,  448476.,  1600674., 1611276., 2092408., 2106640., 2562590.,
      2580500., 2596190., 2614340., 2629790., 2648180., 2663390., 2682020.,
      2083000., 2098000., 1526082., 1537404., 1985656., 2000560., 2585120.,
      2605120., 3152520., 3177680., 3190920., 3216400., 3229320., 3255120.,
      3267720., 3293840., 2543904., 2564928., 1854712., 1870576., 2270750.,
      2290340., 2941320., 2967600., 3567650., 3600700., 3607650., 3641100.,
      3647650., 3681500., 3687650., 3721900., 2853960., 2881520., 2067710.,
      2088500., 2478110., 2499620., 3207560., 3236400., 3887650., 3923900.,
      3927650., 3964300., 3967650., 4004700., 4007650., 4045100., 3099720.,
      3129840., 2244350., 2267060., 2685470., 2708900., 3473800., 3505200.,
      4207650., 4247100., 4247650., 4287500., 4287650., 4327900., 4327650.,
      4368300., 3345480., 3378160., 2420990., 2445620., 2892830., 2918180.,
      3740040., 3774000., 4527650., 4570300., 4567650., 4610700., 4607650.,
      4651100., 4647650., 4691500., 3591240., 3626480., 2597630., 2624180.,
      1930168., 1951216., 2473248., 2501440., 2965320., 3000720., 2990920.,
      3026640., 3016520., 3052560., 3042120., 3078480., 2325536., 2354752.,
      1662520., 1684528., 1144194., 1160556., 1445368., 1467280., 1705790.,
      1733300., 1720190., 1747940., 1734590., 1762580., 1748990., 1777220.,
      1313080., 1335760., 919842.,  936924.,  2964642., 2984460., 3861880.,
      3888400., 4712990., 4746260., 4746590., 4780100., 4780190., 4813940.,
      4813790., 4847780., 3754168., 3781456., 2742594., 2763132., 3558520.,
      3585712., 4616736., 4653120., 5610120., 5655760., 5648520., 5694480.,
      5686920., 5733200., 5725320., 5771920., 4444448., 4481856., 3230968.,
      3259120., 3929630., 3964580., 5071240., 5118000., 6127650., 6186300.,
      6167650., 6226700., 6207650., 6267100., 6247650., 6307500., 4820040.,
      4868080., 3480830., 3516980., 4136990., 4173860., 5337480., 5386800.,
      6447650., 6509500., 6487650., 6549900., 6527650., 6590300., 6567650.,
      6630700., 5065800., 5116400., 3657470., 3695540., 4344350., 4383140.,
      5603720., 5655600., 6767650., 6832700., 6807650., 6873100., 6847650.,
      6913500., 6887650., 6953900., 5311560., 5364720., 3834110., 3874100.,
      4551710., 4592420., 5869960., 5924400., 7087650., 7155900., 7127650.,
      7196300., 7167650., 7236700., 7207650., 7277100., 5557320., 5613040.,
      4010750., 4052660., 3011512., 3044848., 3849504., 3894080., 4603720.,
      4659600., 4629320., 4685520., 4654920., 4711440., 4680520., 4737360.,
      3570720., 3616320., 2547256., 2581552., 1770882., 1796460., 2231800.,
      2266000., 2627390., 2670260., 2641790., 2684900., 2656190., 2699540.,
      2670590., 2714180., 2001208., 2036176., 1399074., 1425372.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1007650., 1015100., 1047650., 1055500., 1087650., 1095900., 1127650.,
      1136300., 1327650., 1338300., 1367650., 1378700., 1407650., 1419100.,
      1447650., 1459500., 1647650., 1661500., 1687650., 1701900., 1727650.,
      1742300., 1767650., 1782700., 1967650., 1984700., 2007650., 2025100.,
      2047650., 2065500., 2087650., 2105900., 3567650., 3600700., 3607650.,
      3641100., 3647650., 3681500., 3687650., 3721900., 3887650., 3923900.,
      3927650., 3964300., 3967650., 4004700., 4007650., 4045100., 4207650.,
      4247100., 4247650., 4287500., 4287650., 4327900., 4327650., 4368300.,
      4527650., 4570300., 4567650., 4610700., 4607650., 4651100., 4647650.,
      4691500., 6127650., 6186300., 6167650., 6226700., 6207650., 6267100.,
      6247650., 6307500., 6447650., 6509500., 6487650., 6549900., 6527650.,
      6590300., 6567650., 6630700., 6767650., 6832700., 6807650., 6873100.,
      6847650., 6913500., 6887650., 6953900., 7087650., 7155900., 7127650.,
      7196300., 7167650., 7236700., 7207650., 7277100.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, SAME3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      472026.,   473412.,   474798.,   476184.,   643928.,   645872.,
      647816.,   649760.,   821830.,   824380.,   826930.,   829480.,
      888790.,   891580.,   894370.,   897160.,   955750.,   958780.,
      961810.,   964840.,   1022710.,  1025980.,  1029250.,  1032520.,
      820952.,   823664.,   826376.,   829088.,   617034.,   619140.,
      621246.,   623352.,   822968.,   825584.,   828200.,   830816.,
      1103392.,  1107008.,  1110624.,  1114240.,  1385160.,  1389840.,
      1394520.,  1399200.,  1461640.,  1466640.,  1471640.,  1476640.,
      1538120.,  1543440.,  1548760.,  1554080.,  1614600.,  1620240.,
      1625880.,  1631520.,  1282080.,  1286720.,  1291360.,  1296000.,
      953336.,   956912.,   960488.,   964064.,   1219510.,  1223740.,
      1227970.,  1232200.,  1617000.,  1622800.,  1628600.,  1634400.,
      2007850.,  2015300.,  2022750.,  2030200.,  2087450.,  2095300.,
      2103150.,  2111000.,  2167050.,  2175300.,  2183550.,  2191800.,
      2246650.,  2255300.,  2263950.,  2272600.,  1768680.,  1775760.,
      1782840.,  1789920.,  1303750.,  1309180.,  1314610.,  1320040.,
      1632310.,  1638460.,  1644610.,  1650760.,  2146920.,  2155280.,
      2163640.,  2172000.,  2644650.,  2655300.,  2665950.,  2676600.,
      2724250.,  2735300.,  2746350.,  2757400.,  2803850.,  2815300.,
      2826750.,  2838200.,  2883450.,  2895300.,  2907150.,  2919000.,
      2257640.,  2267280.,  2276920.,  2286560.,  1655110.,  1662460.,
      1669810.,  1677160.,  2045110.,  2053180.,  2061250.,  2069320.,
      2676840.,  2687760.,  2698680.,  2709600.,  3281450.,  3295300.,
      3309150.,  3323000.,  3361050.,  3375300.,  3389550.,  3403800.,
      3440650.,  3455300.,  3469950.,  3484600.,  3520250.,  3535300.,
      3550350.,  3565400.,  2746600.,  2758800.,  2771000.,  2783200.,
      2006470.,  2015740.,  2025010.,  2034280.,  2457910.,  2467900.,
      2477890.,  2487880.,  3206760.,  3220240.,  3233720.,  3247200.,
      3918250.,  3935300.,  3952350.,  3969400.,  3997850.,  4015300.,
      4032750.,  4050200.,  4077450.,  4095300.,  4113150.,  4131000.,
      4157050.,  4175300.,  4193550.,  4211800.,  3235560.,  3250320.,
      3265080.,  3279840.,  2357830.,  2369020.,  2380210.,  2391400.,
      1688888.,  1697648.,  1706408.,  1715168.,  2182176.,  2193984.,
      2205792.,  2217600.,  2638920.,  2653840.,  2668760.,  2683680.,
      2689800.,  2705040.,  2720280.,  2735520.,  2740680.,  2756240.,
      2771800.,  2787360.,  2791560.,  2807440.,  2823320.,  2839200.,
      2147872.,  2160704.,  2173536.,  2186368.,  1545848.,  1555568.,
      1565288.,  1575008.,  1027866.,  1035012.,  1042158.,  1049304.,
      1308248.,  1317872.,  1327496.,  1337120.,  1556230.,  1568380.,
      1580530.,  1592680.,  1584790.,  1597180.,  1609570.,  1621960.,
      1613350.,  1625980.,  1638610.,  1651240.,  1641910.,  1654780.,
      1667650.,  1680520.,  1239512.,  1249904.,  1260296.,  1270688.,
      873354.,   881220.,   889086.,   896952.,   3190746.,  3201348.,
      3211950.,  3222552.,  4170584.,  4184816.,  4199048.,  4213280.,
      5107270.,  5125180.,  5143090.,  5161000.,  5174230.,  5192380.,
      5210530.,  5228680.,  5241190.,  5259580.,  5277970.,  5296360.,
      5308150.,  5326780.,  5345410.,  5364040.,  4151000.,  4166000.,
      4181000.,  4196000.,  3040842.,  3052164.,  3063486.,  3074808.,
      3956408.,  3971312.,  3986216.,  4001120.,  5150240.,  5170240.,
      5190240.,  5210240.,  6279880.,  6305040.,  6330200.,  6355360.,
      6356360.,  6381840.,  6407320.,  6432800.,  6432840.,  6458640.,
      6484440.,  6510240.,  6509320.,  6535440.,  6561560.,  6587680.,
      5066784.,  5087808.,  5108832.,  5129856.,  3693560.,  3709424.,
      3725288.,  3741152.,  4521910.,  4541500.,  4561090.,  4580680.,
      5856360.,  5882640.,  5908920.,  5935200.,  7102250.,  7135300.,
      7168350.,  7201400.,  7181850.,  7215300.,  7248750.,  7282200.,
      7261450.,  7295300.,  7329150.,  7363000.,  7341050.,  7375300.,
      7409550.,  7443800.,  5680360.,  5707920.,  5735480.,  5763040.,
      4114630.,  4135420.,  4156210.,  4177000.,  4934710.,  4956220.,
      4977730.,  4999240.,  6386280.,  6415120.,  6443960.,  6472800.,
      7739050.,  7775300.,  7811550.,  7847800.,  7818650.,  7855300.,
      7891950.,  7928600.,  7898250.,  7935300.,  7972350.,  8009400.,
      7977850.,  8015300.,  8052750.,  8090200.,  6169320.,  6199440.,
      6229560.,  6259680.,  4465990.,  4488700.,  4511410.,  4534120.,
      5347510.,  5370940.,  5394370.,  5417800.,  6916200.,  6947600.,
      6979000.,  7010400.,  8375850.,  8415300.,  8454750.,  8494200.,
      8455450.,  8495300.,  8535150.,  8575000.,  8535050.,  8575300.,
      8615550.,  8655800.,  8614650.,  8655300.,  8695950.,  8736600.,
      6658280.,  6690960.,  6723640.,  6756320.,  4817350.,  4841980.,
      4866610.,  4891240.,  5760310.,  5785660.,  5811010.,  5836360.,
      7446120.,  7480080.,  7514040.,  7548000.,  9012650.,  9055300.,
      9097950.,  9140600.,  9092250.,  9135300.,  9178350.,  9221400.,
      9171850.,  9215300.,  9258750.,  9302200.,  9251450.,  9295300.,
      9339150.,  9383000.,  7147240.,  7182480.,  7217720.,  7252960.,
      5168710.,  5195260.,  5221810.,  5248360.,  3839288.,  3860336.,
      3881384.,  3902432.,  4918304.,  4946496.,  4974688.,  5002880.,
      5895240.,  5930640.,  5966040.,  6001440.,  5946120.,  5981840.,
      6017560.,  6053280.,  5997000.,  6033040.,  6069080.,  6105120.,
      6047880.,  6084240.,  6120600.,  6156960.,  4621856.,  4651072.,
      4680288.,  4709504.,  3303032.,  3325040.,  3347048.,  3369056.,
      2272026.,  2288388.,  2304750.,  2321112.,  2868824.,  2890736.,
      2912648.,  2934560.,  3384070.,  3411580.,  3439090.,  3466600.,
      3412630.,  3440380.,  3468130.,  3495880.,  3441190.,  3469180.,
      3497170.,  3525160.,  3469750.,  3497980.,  3526210.,  3554440.,
      2603480.,  2626160.,  2648840.,  2671520.,  1822602.,  1839684.,
      1856766.,  1873848.,  5909466.,  5929284.,  5949102.,  5968920.,
      7697240.,  7723760.,  7750280.,  7776800.,  9392710.,  9425980.,
      9459250.,  9492520.,  9459670.,  9493180.,  9526690.,  9560200.,
      9526630.,  9560380.,  9594130.,  9627880.,  9593590.,  9627580.,
      9661570.,  9695560.,  7481048.,  7508336.,  7535624.,  7562912.,
      5464650.,  5485188.,  5505726.,  5526264.,  7089848.,  7117040.,
      7144232.,  7171424.,  9197088.,  9233472.,  9269856.,  9306240.,
      11174600., 11220240., 11265880., 11311520., 11251080., 11297040.,
      11343000., 11388960., 11327560., 11373840., 11420120., 11466400.,
      11404040., 11450640., 11497240., 11543840., 8851488.,  8888896.,
      8926304.,  8963712.,  6433784.,  6461936.,  6490088.,  6518240.,
      7824310.,  7859260.,  7894210.,  7929160.,  10095720., 10142480.,
      10189240., 10236000., 12196650., 12255300., 12313950., 12372600.,
      12276250., 12335300., 12394350., 12453400., 12355850., 12415300.,
      12474750., 12534200., 12435450., 12495300., 12555150., 12615000.,
      9592040.,  9640080.,  9688120.,  9736160.,  6925510.,  6961660.,
      6997810.,  7033960.,  8237110.,  8273980.,  8310850.,  8347720.,
      10625640., 10674960., 10724280., 10773600., 12833450., 12895300.,
      12957150., 13019000., 12913050., 12975300., 13037550., 13099800.,
      12992650., 13055300., 13117950., 13180600., 13072250., 13135300.,
      13198350., 13261400., 10081000., 10131600., 10182200., 10232800.,
      7276870.,  7314940.,  7353010.,  7391080.,  8649910.,  8688700.,
      8727490.,  8766280.,  11155560., 11207440., 11259320., 11311200.,
      13470250., 13535300., 13600350., 13665400., 13549850., 13615300.,
      13680750., 13746200., 13629450., 13695300., 13761150., 13827000.,
      13709050., 13775300., 13841550., 13907800., 10569960., 10623120.,
      10676280., 10729440., 7628230.,  7668220.,  7708210.,  7748200.,
      9062710.,  9103420.,  9144130.,  9184840.,  11685480., 11739920.,
      11794360., 11848800., 14107050., 14175300., 14243550., 14311800.,
      14186650., 14255300., 14323950., 14392600., 14266250., 14335300.,
      14404350., 14473400., 14345850., 14415300., 14484750., 14554200.,
      11058920., 11114640., 11170360., 11226080., 7979590.,  8021500.,
      8063410.,  8105320.,  5989688.,  6023024.,  6056360.,  6089696.,
      7654432.,  7699008.,  7743584.,  7788160.,  9151560.,  9207440.,
      9263320.,  9319200.,  9202440.,  9258640.,  9314840.,  9371040.,
      9253320.,  9309840.,  9366360.,  9422880.,  9304200.,  9361040.,
      9417880.,  9474720.,  7095840.,  7141440.,  7187040.,  7232640.,
      5060216.,  5094512.,  5128808.,  5163104.,  3516186.,  3541764.,
      3567342.,  3592920.,  4429400.,  4463600.,  4497800.,  4532000.,
      5211910.,  5254780.,  5297650.,  5340520.,  5240470.,  5283580.,
      5326690.,  5369800.,  5269030.,  5312380.,  5355730.,  5399080.,
      5297590.,  5341180.,  5384770.,  5428360.,  3967448.,  4002416.,
      4037384.,  4072352.,  2771850.,  2798148.,  2824446.,  2850744.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride1, VALID3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2007850.,  2015300.,  2022750.,  2030200.,  2087450.,  2095300.,
      2103150.,  2111000.,  2167050.,  2175300.,  2183550.,  2191800.,
      2246650.,  2255300.,  2263950.,  2272600.,  2644650.,  2655300.,
      2665950.,  2676600.,  2724250.,  2735300.,  2746350.,  2757400.,
      2803850.,  2815300.,  2826750.,  2838200.,  2883450.,  2895300.,
      2907150.,  2919000.,  3281450.,  3295300.,  3309150.,  3323000.,
      3361050.,  3375300.,  3389550.,  3403800.,  3440650.,  3455300.,
      3469950.,  3484600.,  3520250.,  3535300.,  3550350.,  3565400.,
      3918250.,  3935300.,  3952350.,  3969400.,  3997850.,  4015300.,
      4032750.,  4050200.,  4077450.,  4095300.,  4113150.,  4131000.,
      4157050.,  4175300.,  4193550.,  4211800.,  7102250.,  7135300.,
      7168350.,  7201400.,  7181850.,  7215300.,  7248750.,  7282200.,
      7261450.,  7295300.,  7329150.,  7363000.,  7341050.,  7375300.,
      7409550.,  7443800.,  7739050.,  7775300.,  7811550.,  7847800.,
      7818650.,  7855300.,  7891950.,  7928600.,  7898250.,  7935300.,
      7972350.,  8009400.,  7977850.,  8015300.,  8052750.,  8090200.,
      8375850.,  8415300.,  8454750.,  8494200.,  8455450.,  8495300.,
      8535150.,  8575000.,  8535050.,  8575300.,  8615550.,  8655800.,
      8614650.,  8655300.,  8695950.,  8736600.,  9012650.,  9055300.,
      9097950.,  9140600.,  9092250.,  9135300.,  9178350.,  9221400.,
      9171850.,  9215300.,  9258750.,  9302200.,  9251450.,  9295300.,
      9339150.,  9383000.,  12196650., 12255300., 12313950., 12372600.,
      12276250., 12335300., 12394350., 12453400., 12355850., 12415300.,
      12474750., 12534200., 12435450., 12495300., 12555150., 12615000.,
      12833450., 12895300., 12957150., 13019000., 12913050., 12975300.,
      13037550., 13099800., 12992650., 13055300., 13117950., 13180600.,
      13072250., 13135300., 13198350., 13261400., 13470250., 13535300.,
      13600350., 13665400., 13549850., 13615300., 13680750., 13746200.,
      13629450., 13695300., 13761150., 13827000., 13709050., 13775300.,
      13841550., 13907800., 14107050., 14175300., 14243550., 14311800.,
      14186650., 14255300., 14323950., 14392600., 14266250., 14335300.,
      14404350., 14473400., 14345850., 14415300., 14484750., 14554200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, features, padding, max_input_val);
}